Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]1837[/thread]

df auf ftp?



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
jan
 2006-03-22 18:00
#18276 #18276
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
gibt's eigentlich eine einfache möglichkeit auf einem ftpserver herauszufinden, wieviel platz zur verfügung steht und wieviel davon noch frei ist?

limitierungen könnten ja sein: plattenplatz oder quota. aber wie weiß man, ohne auf eine fehlermeldung zu warten, ob der aktuelle hochzuladene kram noch draufpasst?
Taulmarill
 2006-03-22 18:32
#18277 #18277
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
afaik nicht direkt, aber viele ftp-server erlauben das ausführen von komandos in der lokalen shell.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
jan
 2006-03-22 18:35
#18278 #18278
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
mh, wie würde ich denn lokale kommandos per ftp ausführen?
GwenDragon
 2006-03-22 18:35
#18279 #18279
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Nein.
df wird ja garantiert nicht ausgeführt. Meist nur ls und chmod.

Manche Befehle kannst du mit SITE ausführen, aber wie das auf deinem ftp-Server geht, kA.\n\n

<!--EDIT|GwenDragon|1143045409-->
jan
 2006-03-23 00:01
#18280 #18280
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
mh, cool, dann werde ich wohl nicht drum herum kommen, rekursiv zumindest den aktuell belegten platz auslesen zu lassen.

laut meinem kunden hat sich der support-mitarbeiter (von schlund & partner, es geht um den backup-space für rootserver) dahingehend geäußert, dass das mit CPAN:Filesys::DiskFree ginge - allerdings finde ich keinen hinweis darauf ;(
ptk
 2006-03-23 00:48
#18281 #18281
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Bei FTP-Servern hat man allgemein nicht die Möglichkeit, eigene Programme ausführen zu lassen. Bei HTTP-Servern kann man das, typischerweise als CGI. Du könntest also versuchen, beide Protokolle zu verheiraten, oder gleich alles über HTTP (evtl. auch WebDAV?) abzudecken. Oder du findest einen FTP-Server, der (über Hooks?) eigene Programme ausführen kann.
jan
 2006-03-23 00:57
#18282 #18282
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
nein, das problem ist ja leider, dass zu dem root-server bei schlund ein schöner backup-space gehört, der per ftp erreichbar ist. darauf soll nun ein backup laufen - soweit kein thema. allerdings ist der backupspace kleiner als die platte des servers und da der kunde fröhlich seine festplatte vollknallt, reicht der platz nicht. natürlich spart man mit tgzs einiges, aber es wäre ja trotzdem möglich, dass der platz vollläuft - dann sollten ev. alte backups gelöscht werden. da der ftp-backup-server nicht unter meiner kontrolle steht, habe ich daher leider keine möglichkeit, irgendwelche http-sachen laufen zu lassen oder den ftpd auszutauschen ;(

naja, da ich die gesamtkapazität theoretisch kenne, brauche ich nun nur noch rekursiv zu checken, welche dateien drauf sind (was in diesem fall kein problem ist, weil's nur wenige verzeichnisse mit ein paar dutzend dateien sind). aber die antwort von dem techniker machte mich stutzig, denn ich war auch immer der meinung, dass das vom ftp-protocol prinzipiell erst mal nicht vorgesehen wird. naja. aus fehlern lernt man - und da die uns sämtliche aktionen im kundenmenü gesperrt haben, weil sie das image, das wir damals zum installieren genutzt haben, nicht mehr haben erklärt ja einiges.
Dubu
 2006-03-23 09:39
#18283 #18283
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Hast du es denn mal mit einem SITE-Befehl versucht, wie von GwenDragon vorgeschlagen? Du könntest per Kommandozeilen-FTP nach dem Einloggen mit so etwas wie "quote help" testen, ob und welche Remote-Befehle noch existieren.
jan
 2006-03-23 13:12
#18284 #18284
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
ja, das habe ich, aber da ist mir leider nur
Quote
ftp> quote SITE help
214 CHMOD UMASK HELP

erlaubt ;(
jan
 2006-03-23 15:12
#18285 #18285
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
mein jetziges script (uh uh, code ahead, bitte nur freundlich kritisieren ;( )

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/local/bin/perl
use strict;
use warnings;
use Net::FTP;
my $ftphost = $ARGV[0] || '';
my $ftpuser = $ARGV[1] || '';
my $ftppass = $ARGV[2] || '';
my $ftpdir = $ARGV[3] || '';
my $ftp = Net::FTP->new($ftphost, Debug => 0) or die 'Cannot connect to ' . $ftphost . ': ' . $@;
$ftp->login($ftpuser, $ftppass) or die 'Cannot login ' . $ftp->message;
my @directories = ('');
my $totalsize = 0;
my $verbose = 0;
while(defined(my $directory = shift @directories))
{
print "checking " . $ftpdir . $directory . "\n" if($verbose);
if(my $listing = $ftp->dir($ftpdir . $directory))
{
for my $element (@$listing)
{
if(my ($permissions, $trash, $user, $group, $size, $month, $mday, $year, $name) = split(/\s+/, $element, 9))
{

if(substr($permissions, 0, 1) eq 'd')

{

push @directories, $directory . '/' . $name;

print "adding $directory/$name to list\n" if($verbose);

}

else

{

$totalsize += $size;

}
}
}
}
else
{
die 'Cannot read ' . $ftpdir . $directory . ': ' . $ftp->message;
}
}
$ftp->quit;
if($verbose)
{
print "total size is: " . $totalsize . "\n" if($verbose);
}
else
{
print $totalsize;
}


aufruf als ./filename.pl ftpserver ftpuser ftppassword [ftpverzeichnis falls man nur die gesamtgröße eines verzeichnisses haben will.]
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2006-03-22 18:00.