www.ProFTPD.de

ProFTPD => ProFTPD - Deutsch => Thema gestartet von: Anonymous am 19. Dezember 2003, 12:34:27



Titel: an wörsty
Beitrag von: Anonymous am 19. Dezember 2003, 12:34:27
hiho du kennst dich ja ziehmlich gut mit bash scripten aus!
also folgendes hab nen script eingebaut sieht so aus
#!/bin/sh
/bin/echo '--------------------' > $1
/bin/echo '--------------------------------------' >> $1
/bin/echo 'max. connections: %M'>> $1
/bin/echo '--------------------------------------' >> $1
/usr/local/bin/ftpwho >> $1
/bin/echo '--------------------------------------' >> $1
/usr/local/bin/ftpwho -v | grep KB/s >> $1
/bin/echo '--------------------------------------' >> $1
/bin/echo 'used: free:    [64]' >> $1
df -h | head -5 | tail -1 | cut -b23-39 >> $1
/bin/echo '--------------------------------------' >> $1

beim ausspucken sieht das so aus
220-----------d-u-m-p----------
 --------------------------------------
 max. connections: 12
 --------------------------------------
 standalone FTP daemon [1407], up for 15 hrs 10 min
  5796 xx   [ 1h33m] ( 78%) xxx
  6013 xx   [  1h8m] ( 38%) xx
  2127 xx    [ 12h5m] ( 79%) xx
  6902 xx    [  3m6s]   3m4s idle
  6138 xx   [58m34s] ( 41%) xx
  6638 xxr   [23m45s] ( 81%) xx
 Service class                      -   6 users
 --------------------------------------
         KB/s: 77.93
         KB/s: 88.89
         KB/s: 18.01
         KB/s: 202.40
         KB/s: 192.65
 --------------------------------------
 used: free:    [64]
 61G   4.1G    94%

jetzt zu meiner frage

ich mäöchte gern den speed vor den entsprechenden usern haben

zb so

KB/s: 77.93  5796 xx   [ 1h33m] ( 78%) xxx
...
bekomm das nich gebacken
kannste mir da weiterhelfen?
cui


Titel: an wörsty
Beitrag von: Wörsty am 19. Dezember 2003, 22:17:22
Scheiße ich raff es nicht.  :?  :cry:
Ich hasse reguläre Ausdrücke :evil:
Eigentlich wollte ich alles bis zum Wort "client:" haben aber ich bin zu blöd :oops:
Vielleicht weiß es ja jemand anders.
So funktioniert es nämlich nicht, wenn im usernamen ein c vorkommt....

Aber so in etwa :roll:
Code:
/usr/local/bin/ftpwho -v -ooneline  |/bin/sed -e 's/^\( [^c]*\) .*$/\1/' |/bin/grep -v "Service class" |/bin/grep -v "FTP daemon">> $1

Sieht so aus
Zitat
6136 woersty.dyndns.org [ 0m20s] (n/a) STOR WWWPRIVAT.zip KB/s: 32.22
 6138 woersty.dyndns.org [ 0m11s]  0m11s idle
 6140 woersty.dyndns.org [  0m2s] ( 16%) RETR WWWPRIVAT.zip KB/s: 88.00
 6060 woersty.dyndns.org [  4m6s]  0m24s idle


Titel: May it be a light to you in dark places when all other... ;)
Beitrag von: Schaka am 21. Dezember 2003, 13:49:38
... in der hoffnung, dass mein entwickeltes PERL-Script (!) allen gefällt, die ftptop, ftpwho bzw. ps zu unaussagekräftig finden und sich eine mischung aus allen drei wünschen...

angezeigt werden: operation, pfad & datei, ip & host, user & passwort, pid, insgesamt auf dem ftp verbrachte zeit, prozent, speed

Code:

#!/usr/bin/perl

print "\n";

open PS, "/bin/ps aux | awk /^.*p[r]of.*-.*\$/ |";

while(<PS>) {
  ($uid,$pid,$foo,$foo,$foo,$foo,$foo,$foo,$foo,$foo,$foo,$foo,$foo,$host,$user,$operation,$file) = split(/\s+/, $_);
  ($foo,$user,$foo) = split(/\/|:/, $user);
  $host =~ s/://;
  if ($file) { $file = "\/$file"; }  
  $ftp = `ftpwho -v | grep -A 4 $pid`;
  ($first, $rate, $ip, $foo, $location, $foo) = split(/\n/, $ftp);
  $first =~ /\[(.*)\]/;
  $zeit = $1;
  $zeit =~ s/^\s*//g;
  $first =~ /\((.*)\)/;
  $prozent = $1;
  $prozent =~ s/^\s*//g;
  $rate =~ s/^\s*//;
  if (substr($rate, 0, 2) ne "KB") {
    ($first, $ip, $foo, $location, $foo) = split(/\n/, $ftp);
    $rate = "0";
  }
  else {
    $rate =~ s/KB\/s:\s//;
  }
  $ip =~ /\[(.*)\]/;
  $ip = $1;
  $location =~ s/^\s*location:\s//;
  print "$pid\t$uid\t$user\t$zeit\t$rate kB\/sek\t$ip\t$host\n$prozent\t$operation $location$file\n\n";
}

close PS;

##ENDE



PS: der user, der das script ausführen möchte, braucht nen 'x' (also ans chmod denken)... und muss ps aux, ftptop und ftpwho ausführen dürfen.