Мне нужно запустить простой скрипт для проверки статуса хоста (ping),
У меня есть следующий скрипт:
#!/bin/bash
echo "Host checker:"
if [ "`ping -c 1 172.17.10.1`" ]
then
echo "HOST UP"
else
echo "HOST DOWN"
fi
Следующие разрешения:
-rwxrwxrwx 1 sysadmin users 142 Jul 13 16:14 lgchk.sh
При выдаче ping из bash все в порядке:
sysadmin@host:~$ ping 172.17.10.1
PING 172.17.10.1 (172.17.10.1) 56(84) bytes of data.
64 bytes from 172.17.10.1: icmp_seq=1 ttl=64 time=0.159 ms
64 bytes from 172.17.10.1: icmp_seq=2 ttl=64 time=0.186 ms
64 bytes from 172.17.10.1: icmp_seq=3 ttl=64 time=0.203 ms
Но при запуске скрипта я получил ошибку:
sysadmin@host:~$ ./lgchk.sh
Host checker:
ping: icmp open socket: Operation not permitted
HOST DOWN
Если я запущу ping внутри скрипта, как показано ниже:
...
if [ "`su -u sysadmin ping -c 1 172.17.10.1`" ]
...
Все будет в порядке, но он запросит пароль.
Не могли бы вы подсказать, почему это происходит и как это исправить? Отличаются ли привилегии команд внутри сценария от привилегий в командной строке?