[+] Otwarte porty, przekazanie zmiennej do polecenia powłoki - bash, python
: 26 grudnia 2012, 14:10
Witam.
Mam problem ze skryptem, który ma sprawdzać otwarte porty takie jak 22 czy 80.
Robię tablicę asocjacyjną gdzie do nazwy usługi przypisuję port. Następnie chcę wyciągnąć port i poprzez polecenie:
sprawdzić czy port jest otwarty.
I teraz mam problem, ponieważ, nie wiem jak przekazać wyciągnięty port do zmiennej $P w poleceniu. Oczywiście robię import os i odpowiednio wywołuję netstat.
Na razie mam coś takiego i nie bardzo wiem co dalej:
W bashu mam coś takiego:
Jednak tutaj np.. nie pokazuje, że port 22 działa. Dalej, czy w bashu da się zrobić tablicę asocjacyjną. Mam basha 4.0 lub też pętlę w pętli: (for coś tam i for coś tam).
Proszę o jakieś wskazówki. Wiem, że można to zrobić choćby nmapem ale chcę z pomocą skryptu.
Mam problem ze skryptem, który ma sprawdzać otwarte porty takie jak 22 czy 80.
Robię tablicę asocjacyjną gdzie do nazwy usługi przypisuję port. Następnie chcę wyciągnąć port i poprzez polecenie:
Kod: Zaznacz cały
`netstat -tln | grep $P | awk '{print $6}'`
I teraz mam problem, ponieważ, nie wiem jak przekazać wyciągnięty port do zmiennej $P w poleceniu. Oczywiście robię import os i odpowiednio wywołuję netstat.
Na razie mam coś takiego i nie bardzo wiem co dalej:
Kod: Zaznacz cały
import os
Porty={'SSH':'22', 'FTP':'21'}
for P in Porty:
Port=os.system("netstat -tln | grep $P | awk '{print $6}'")
if Port == LISTEN:
print Porty[P] "OK."
else:
print Porty[P] "Nie dziala."
W bashu mam coś takiego:
Kod: Zaznacz cały
PORT=('21' '22' '23' '25' '53' '69' '80' '110' '111' '119' '143' '220' '389')
NAME=('FTP' 'Sftp' 'Telnet' 'SMTP' 'DNS' 'TFTP' 'WWW' 'POP3' 'NNTP' 'IMAP' 'IMAP')
for P in ${PORT
[*]}
do
for N in $NAME
do
STAT=`netstat -tln | grep $P | awk '{print $6}'`
if [ "$STAT" != "LISTEN" ]; then
echo "Nie dziala." $P $N
else
echo "Dziala." $P $N
fi
done
done
Proszę o jakieś wskazówki. Wiem, że można to zrobić choćby nmapem ale chcę z pomocą skryptu.