Я пытаюсь написать bash-скрипт, который будет принимать вывод who, анализировать его с помощью awk, извлекать IP-адрес и затем проверять его по массиву IP-адресов ... звучит просто, но сценарий, который я собрал, делаетне похоже на работу, я протестировал его на OSX и Ubuntu, кто-нибудь может определить, почему?
ip_address_is_safe() {
local address_to_test=$1;
for safe_ip in "${safe_ips[@]}"
do
if [[ $safe_ip == $address_to_test ]];
then
return 0;
fi
done;
return 1;
}
who="root pts/0 2011-10-03 23:13 (99.99.999.999)
root pts/0 2011-10-03 23:13 (12.12.121.121)
root pts/0 2011-10-03 23:13 (14.14.141.141)
root pts/0 2011-10-03 23:13 (127.0.0.1)
";
safe_ips=("(14.14.141.141)" "(127.0.0.1)")
old_ifs=$IFS;
export IFS="
";
for word in $who; do
remote_connected_ip=`echo $word | awk '/(23)/ {print $5}'`;
if (ip_address_is_safe "$remote_connected_ip")
then
echo "ip was ok - $remote_connected_ip"
else
echo "ip was not ok - $remote_connected_ip"
fi
done;
Он сообщает о каждом IP-адресе как "ip not not ok"
Cheers! 3