Привилегии команд внутри сценария оболочки

Мне нужно запустить простой скрипт для проверки статуса хоста (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`" ]
...

Все будет в порядке, но он запросит пароль.

Не могли бы вы подсказать, почему это происходит и как это исправить? Отличаются ли привилегии команд внутри сценария от привилегий в командной строке?

-1
13.07.2016, 16:18
0 ответов

Теги

Похожие вопросы