Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > Убить процесс на роутере


Автор: BlackRu 29.10.2009, 22:51
Нужно подключиться по телнету скриптом и убить процесс. Честно говоря, долго искал, как сделать автоподключение без expect. Однако получилось только подключение и выполнение команды на основе найденного в Гугле, правда, чуток по другому и проще.

Код

#!/bin/sh
  (
    sleep 1
    echo "admin"
    sleep 1
    echo "123"
    sleep 1
    echo "sh"
    echo "$1 $2"
    sleep 1
    echo "quit"
   ) | telnet 192.168.1.1 23



Осталось убить процесс с именем telnetd.  Нельзя использовать pkill, killall. Из команд, связанных с процессами, доступны только ps и top, ну и kill по PID. 

В общем пока получается только в полуавтоматическом режиме smile



Автор: Imple 30.10.2009, 07:25
Код
kill `ps ax | grep telnetd | awk '{ print $1 }'`

?

Автор: BlackRu 30.10.2009, 12:44
Imple, grep на роутере отсутствует, но наверно, идея близка к истине, т.е. сначала нужно зайти на роутер, выполнить ps, считать все в файл на клиентском компьютере, затем  что-то вроде:

`grep telnetd ~router_output_file | awk '{ print $1 }'`;  остается как-то запомнить и передать роутеру $1
при втором заходе, но проблема в том, что окружение уже другое.

Автор: BlackRu 30.10.2009, 17:26
Сделал. Считал вывод в файл,  затем магическая команда Imple с перенаправлением в другой файл, а дальше, думаю, объяснять не надо. Товарищ, Imple, огромнейшее вам спасибо. 
Код

#!/bin/sh
(
 sleep 1
 echo "admin"
 sleep 1
 echo "123"
 sleep 1
 echo "sh"
 sleep 1
 echo "ps"
 sleep 1
 ) | telnet 192.168.1.1 23&>/home/user/file1;
grep telnetd /home/user/file1 | awk '{ print $1 }' > /home/user/file2; cat /home/user/file2;
k=$(cat /home/user/file2)
(
 sleep 1
 echo "admin"
 sleep 1
 echo "123"
 sleep 1
 echo "sh"
 sleep 1
 echo  "kill $k"
 sleep 1
 ) | telnet 192.168.1.1 23

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)