wiki:skripte:ftpwho

barcode

ftpwho-Skript nach /usr/local/bin schreiben

ftpwho
#!/bin/bash
 
#Funktion, um eine Linie zu zeichnen
function linie(){
echo "-----------------------------------------------------------------------------------------------------------------------"
}
 
#setzen des Seperators, damit das Array befüllt werden kann
IFS=$'\n'
 
#Einlesen der Daten in ein Array "Daten"
Daten=( `ps -C vsftpd -o user,pid,stime,cmd | grep "vsftpd:" | egrep -v 'root|nobody' | tr -s ' ' ' '` )
 
# Zeichnen der ersten Tabellenspalte
echo -e "\nftpwho for vsftpd\n"
linie
printf "| %-15s| %-5s | %-17s| %-10s| %-60s|\n" User Start IP Up/Down File
linie
#echo "Ausgabe des Arrays"
for (( i=0 ; $i<${#Daten[*]} ; i=i+1))
do
 
        IFS=$' '
        #Befüllen des Zweiten Arrays, das für jede Zeile zuständig ist
        Zeile=( ${Daten[$i]} ) 
 
 
#       Testschleife, um das Array Zeile[] auszugeben
#       for (( zaehler=0 ; $zaehler<${#Zeile[*]} ; zaehler=zaehler+1 ))
#       do
#               echo Zeile $zaehler: ${Zeile[$zaehler]}
#       done
 
 
        #Wenn nicht der Username sondern die UID ausgegeben wird, wird dies behoben
        case ${Zeile[0]:0:1} in
                0|1|2|3|4|5|6|7|8|9)
                        user=`grep :${Zeile[0]}: /etc/passwd | cut -d":" -f1`
                ;;
                *)
                        user=${Zeile[0]}
        esac
 
        #Zeit und IP aus dem Array in Variablen schreiben
        zeit=${Zeile[2]}
        ip=${Zeile[4]%%/*:}
        # Umwandeln der Worte STOR in "Upload", RETR in "Download" und IDLE in "-"
        case ${Zeile[5]} in
                STOR)
                        updown="Upload"
                ;;
                RETR)
                        updown="Download"
                ;;
                IDLE)
                        updown="-"
                ;;
                *)
        esac
 
        what=''
        for (( z=6 ; $z<${#Zeile[*]} ; z=z+1))
        do
#               echo $z
                what=$what\ ${Zeile[$z]}
#               echo $what
        done
        # Setzen des Seperierungszeichens, damit die Ausgabe richtig formatiert wird
        IFS=$''
        # Ausgabe der jeweiligen ArrayZeile
        printf "| %-15s| %-5s | %-17s| %-10s| %-60s|\n" $user $zeit $ip $updown $what;
 
done
 
if [ ! $i = "0" ]
then
        linie
fi
 
echo
Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
  ____   ____   ___    _  __   __ __
 /_  /  / __/  / _ \  / |/ /  / //_/
  / /_ / _/   / ___/ /    /  / ,<   
 /___//___/  /_/    /_/|_/  /_/|_|
 
  • wiki/skripte/ftpwho.txt
  • Zuletzt geändert: 2012/10/08 14:31
  • (Externe Bearbeitung)