metallica1973 |
01-24-2008 07:48 AM |
Counters and Shell Script Using KSH Shell
I have a Korn shell script that I wanted to incorporate a counter into it to count how many devices I have to produce an output from:
PHP Code:
Ping Telnet Logable? NAM Status (Nmap) (Expect) ================================================= 192.12.58.117 up open No 192.18.58.118 up open No 192.95.96.119 up open No 192.46.96.120 up open No 192.31.210.122 up open No 192.31.210.123 up open No 192.54.210.125 up open No
to:
PHP Code:
Ping Telnet Logable? Devices NAM Status (Nmap) (Expect) ================================================= 1 192.12.58.117 up open No 2 192.18.58.118 up open No 3 192.95.96.119 up open No 4 192.46.96.120 up open No 5 192.31.210.122 up open No 6 192.31.210.123 up open No 7 192.54.210.125 up open No
How would I do so? Here is the script:
PHP Code:
#!/usr/bin/ksh ################################################################################ # FUNCTIONS # ################################################################################ # expect_session() { echo " " >> $logdata echo " " > $logOK # Do not append to this logfile... # Open a telnet session to a remote server, and wait for a username prompt. expect << DONE >>$logdata spawn telnet -e~ -l$userid $ip_address expect { Password: { send "~" sleep 1 log_file -a $logOK send_log "$ip_address Yes\n" log_file exp_continue } timeout { log_file -a $logOK send_log "$ip_address No\n" log_file exit } "closed by foreign host" { log_file -a $logOK send_log "$ip_address No\n" log_file exit } "Connection refused" { log_file -a $logOK send_log "$ip_address No\n" log_file exit } -exact telnet> { send "quit\n" sleep 1 exit } DONE } # detail_line() { results=` ping $ip_address | grep alive ` if [ "X$results" = "X" ] then ping_able=down telnet_able=No log_able=No else ping_able=up telnet_able=`nmap -P0 -sT -p23 $ip_address | grep telnet | cut -d' ' -f2 ` if [ "$telnet_able" = "open" ] then expect_session # Check the log file resulting from login session. log_able=` cat $logOK | grep $ip_address | cut -d' ' -f2 ` fi fi # if [ $ver = NONE ] then printf "%-25s%-8s%-10s %-4s\n" $ip_address $ping_able $telnet_able $log_able >> $check_log else printf "%-25s%-8s%-8s%-10s %-4s\n" $ip_address $ver $ping_able $telnet_able $log_able >> $check_log fi } # ################################################################################ # MAIN # ################################################################################ clear echo "Daily NAM/SNIFFER Probe ... Please wait." userid=metallica1973 check_log=check_nodes.log logdata=nodes.login.data logOK=nodes.login.status mail_to=metallica1973@mindyourbizz@aol.com echo " " > $check_log echo " " > $logata echo " " > $logOK echo "Daily NAM/SNIFFER Probe for - `date`" >> $check_log echo " " >> $check_log printf " Ping Telnet Logable?\n" >> $check_log printf "NAM Version Status (Nmap) (Expect)\n" >> $check_log printf "=========================================================\n" >> $check_log # nodes=NAM_SHORT cat $nodes | while read data_line do ip_address=`echo $data_line | cut -d' ' -f1` ver=`echo $data_line | cut -d' ' -f2` if [ "X$data_line" = "X" ] then continue fi detail_line done echo " " >> $check_log # printf " Ping Telnet Logable?\n" >> $check_log printf "SNIFFERS Status (Nmap) (Expect)\n" >> $check_log printf "=================================================\n" >> $check_log # nodes=sniffer_list.txt cat $nodes | while read data_line do ip_address=` echo $data_line ` ver=NONE if [ "X$data_line" = "X" ] then continue fi detail_line done echo " " >> $check_log echo "Mailing scan results to $mail_to." mailx -s"Daily IP Address Activity Report" $mail_to < $check_log echo "Done!!!" exit
|