Скрипт для контроля за SSH. Чтобы трогал и перезапускал.

Короче, запустить команды из рамок [] мне так и не удалось.

PATH задал в начале скрипта? или оно само должно догадаться, где ps лежит, в каком каталоге?

Почему ps -A|grep ssh|wc -l прекрасно отрабатывает из командной строки, а из скрипта - НЕТ?
потому что при старте из шелла
root@kran-nb:~# set |grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
а когда ты не из шелла стартуешь - будь добр либо задать PATH, либо пиши полные пути к упоминаемым в скрипте файлам.
 
PATH задал в начале скрипта? или оно само должно догадаться, где ps лежит, в каком каталоге?


потому что при старте из шелла

а когда ты не из шелла стартуешь - будь добр либо задать PATH, либо пиши полные пути к упоминаемым в скрипте файлам.

угу. Панатно. Нипанятно только почему вне условного оператора [] в том же скрипте всё работает, а внутри [] перестаёт. Ну то мелочи уже, я просто переменной присваиваю значение вне оператора, и уже её проверяю, без вызова команд внутри [].

Осталось прилепить UART мостик и победить автозапуск скрипта. Там тоже косяки какие-то. Он команды вроде отрабатывает, но я не вижу реакции.

P.S. Я ж сказал, я баш не знаю от слова совсем :) И линуксом вынужден пользоваться только потому, что уёбки не хотят винду армовую портировать на Alwinner. ХЗ где там ему что прописывать, ни в одном примере в интернетах нет такой хуйни. Странно... видимо авторы статей перед тем, как запостить - не проверяют работает ли оно вообще.
 
Странно... видимо авторы статей перед тем, как запостить - не проверяют работает ли оно вообще.
дык скорее всего запускают из шелла. Оно и работает :/.

А если посмотреть любой скрипт запуска любого демона из /etc/init.d - то в любом из них найдешь строку

PATH=/bla;/bla/bla;.....

в начале скрипта (собственно, как и в винде)
 
ps -A|grep apache2|wc -l
дучшее, что я нашел. Возвращает 1, если служба запущена, и 0, если нет
/bin/ps -C sshd -o pid= |wc -l так получше и правильнее.

NB а `/bin/ps -C sshd -o pid= ` вообще тебе вернет pid , если он есть. И можно его сразу использовать, если надо (например, закиляем sshd)
/bin/kill `/bin/ps -C sshd -o pid= `


а то grep ps -A нагрепает тебе... в некоторых случаях и сам твой ps с грепом (там же в строке apache2 тоже есть) :)
 
/bin/ps -C sshd -o pid= |wc -l так получше и правильнее.

NB а `/bin/ps -C sshd -o pid= ` вообще тебе вернет pid , если он есть. И можно его сразу использовать, если надо (например, выведем в консоль PID от sshd:

/bin/echo `/bin/ps -C sshd -o pid= `


а то ps -A нагрепает тебе... в некоторых случаях и сам твой ps (там же в строке apache2 тоже есть) :)
"все события взяты на просторах интернета, совпадение с реальным кодом - считать случайным"(С) :D
При попытках использовать - пострадал один примат.

P.S. Вечером проверю, сейчас игрушко не со мной.
а `/bin/ps -C sshd -o pid= ` вообще тебе вернет pid , если он есть.
он как что его вернёт? Как инт, или строку? Мой вариант
OBJT=$(pgrep ssh )
echo result: $OBJT
if [ "$OBJT" != "" ]
then echo All_is_Done_$1
else echo Undone
service ssh restart
echo service will restarted
fi
возвращает строку. Но это тоже pid
 
он как что его вернёт? Как инт, или строку?
как строку.

удобно использовать в конструкциях для вычисления нужного ID процесса с одновременной подстановкой вычисленного
например,

/bin/kill `/bin/ps -C sshd -o pid= ` - вычислит pid у sshd , и закиляет процесс с оным pid :)
 
как строку.

удобно использовать в конструкциях для вычисления нужного ID процесса с одновременной подстановкой вычисленного
например,

/bin/kill `/bin/ps -C sshd -o pid= ` - вычислит pid у sshd , и закиляет процесс с оным pid

Чем моё отличается?
тоже выдаёт на выход стринг состоящий из pid.
В чём разница pgrep и ps в данном случае? Я ж не понимаю, для меня эти 2 заклинания - одинаковые удары бубном, с одинаковым результатом :D
 
В чём разница pgrep и ps в данном случае
тогда уж

/usr/bin/pgrep -с sshd (не ssh!!!!!)

запускай. На выходе даст (string) 0 , если sshd не обнаружено в процессах.

-с - count

root@kran-nb:~# echo `pgrep sshd`

root@kran-nb:~# echo `pgrep -c sshd`
0

а в твоем варианте даст

root@kran-nb:~# echo `pgrep ssh`
947 6565 21225 21234 24440 24441 24455 24456 24473 24474

и че? сейчас у меня демон выключен, и херова туча исходящих консолей работает :). Я к тому, что демон - sshd , клиент - ssh

иллюстрация небольшая
root@kran-nb:~# echo `pgrep -c sshd`
0
root@kran-nb:~# echo `pgrep -c ssh`
3
root@kran-nb:~# service sshd start
root@kran-nb:~# echo `pgrep -c ssh`
4
root@kran-nb:~# echo `pgrep -c sshd`
1
 
а в твоем варианте даст

root@kran-nb:~# echo `pgrep ssh`
947 6565 21225 21234 24440 24441 24455 24456 24473 24474

и че? сейчас у меня демон выключен, и херова туча исходящих консолей работает :). Я к тому, что демон - sshd , клиент - ssh

иллюстрация небольшая

О. отэтой хуеты я не знал. збазиба.
 
Назад
Зверху Знизу