www.ProFTPD.de
13. März 2007, 21:32:48 *
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
News: SMF - Neu installiert!
 
   Übersicht   Hilfe Suche Login Registrieren  
Seiten: [1]   Nach unten
  Drucken  
Autor Thema: an wörsty  (Gelesen 202 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
Anonymous
Gast
« 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
Gespeichert
Wörsty
Moderator
ProFTPD
*****
Offline Offline

Beiträge: 1602


50772603
Profil anzeigen WWW E-Mail
« Antwort #1 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
Gespeichert

RedHat 8.0 (2.4er Kernel)
proftpd 1.2.10
-mod_sql_mysql
-mow_wrap
-mod_exec
-mod_ifsession[/size]
Schaka
ProFTPD
*
Offline Offline

Beiträge: 10


Profil anzeigen
« Antwort #2 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.
Gespeichert
Seiten: [1]   Nach oben
  Drucken  
 
Gehe zu:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.2 | SMF © 2006-2007, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS
Seite erstellt in 0.079 Sekunden mit 17 Zugriffen.