1.1, mma (?), 07:05, 28/04/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
обычно на модемах естьт telnet, его проще использовать из скриптов.
Но описанный подход как минимум оригинален
| |
|
2.3, Карбофос (ok), 10:59, 28/04/2011 [^] [^^] [^^^] [ответить]
| +/– |
да, это так. просто хотел максимально упростить процесс, т.к. через telnet приходится проходить порой пару-тройку промежуточных пунктов интерфейса, что усложняет написание скрипта.
| |
|
1.2, vi_m (ok), 09:29, 28/04/2011 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Опишите, пожалуйста, что-то подобное через telnet, интересно посмотреть. Зачастую там достаточно скудный набор функций, и я не нашел сходу способа.
Подход действительно интересный, сколько маны не читай, всегда от коллег услышишь что-то новое)
| |
|
2.4, Карбофос (ok), 11:16, 28/04/2011 [^] [^^] [^^^] [ответить]
| +/– |
там просто нужно работать с пайпами, пробираясь от одного пункта меню к другому. в принципе, это вызывает много вопросов у новичков и является дополнительной причиной ошибок. где-то в сети видел подобный скрипт, могу попытаться найти.
| |
2.7, reader (ok), 20:23, 28/04/2011 [^] [^^] [^^^] [ответить]
| +/– |
#!/usr/bin/expect -f
######################################################################################
#$remote_server - сервер, к которому осуществляется доступ #
#$my_user_id - имя пользователя на сервере #
#$my_password - пароль пользователя на сервере #
#$my_command - команда, которая будет запущена на сервере #
# #
######################################################################################
set remote_server1 192.168.1.1
set my_user_id root
set my_password password
set my_command1 "ifconfig"
set my_command2 "PPP='cat /var/run/ppp0.pid' && kill HUP \$PPP"
set my_command3 ""
#
# Открываем telnet сессию на удаленном сервере, и ждем запроса имени пользователя.
spawn telnet $remote_server1
expect "login:"
# Посылаем имя пользователя и ждем запроса пароля.
send "$my_user_id\r"
expect "Password:"
# Посылаем пароль и ждем приглашения ввода командного интерпретатора.
send "$my_password\r"
expect "%"
# Посылаем команду, и ждем следующего приглашения ввода командного интерпретатора.
# send "$my_command1\r"
# expect "%"
send "$my_command2\r"
expect "%"
# send "$my_command3\r"
# expect "%"
# Завершаем сессию telnet, и ждем символа конца строки (eof).
send "exit\r"
expect eof
| |
|
3.8, anonymous (??), 22:40, 28/04/2011 [^] [^^] [^^^] [ответить]
| +/– |
Спасибо, узнал про существование полезной утилиты. Так понимаю, написана на тикле(тянет по зависимостям при установке)? А реализовать подобное на чистом баше, без сторонних утилит - возможно? Чистое любопытство.
| |
|
4.9, anonymous (??), 22:50, 28/04/2011 [^] [^^] [^^^] [ответить]
| +/– |
> Спасибо, узнал про существование полезной утилиты. Так понимаю, написана на тикле(тянет
> по зависимостям при установке)? А реализовать подобное на чистом баше, без
> сторонних утилит - возможно? Чистое любопытство.
Отвечаю сам себе:
(
echo open 192.168.1.1
sleep 2
echo "admin"
sleep 1
echo "admin"
sleep 1
echo "ppp config 0.8.35 1 down"
sleep 8
echo "ppp config 0.8.35 1 up"
sleep 8
echo "logout"
sleep 1
) | telnet
Нашел в интернете как раз по dsl script telnet. Интересно, работает? Возможности проверить сейчас нет.
| |
|
5.10, Карбофос (ok), 23:37, 28/04/2011 [^] [^^] [^^^] [ответить]
| +/– |
Не всегда, например скрипт для одной из железок Zyxel, в стародавние времена была такая у меня :)
#!/bin/sh
host=192.168.1.1
port=23
login="admin"
passwd="examplepassword"
(echo open ${host} ${port}
sleep 1
echo ${login}
sleep 1
echo ${passwd}
sleep 1
echo "24"
sleep 1
echo "8"
sleep 1
echo "poe drop poe0"
sleep 1
echo "dev dial 1"
sleep 1
echo exit) | telnet
| |
5.11, Andrey Mitrofanov (?), 00:00, 29/04/2011 [^] [^^] [^^^] [ответить]
| +/– |
>Интересно, работает? Возможности проверить сейчас нет.
Иногда - работает. Скорее всего так.
Исходя из того, что echo+sleep _совсем_ не одно и то же, что send+expect. То есть работает-работает, а потом "вдруг" 2 секунд не хватило (или 10, или сколько там) - и... не узнаешь никогда... вот.
Ну, хоть не пуск ракет~~~
| |
|
|
|
2.13, Vlad (??), 23:51, 15/05/2011 [^] [^^] [^^^] [ответить]
| +/– |
#!/usr/bin/perl
use Net::Telnet;
my @array = ();
$telnet = new Net::Telnet ( Timeout=>50,
Errmode=>'die',
Prompt => '/[\$%#E<gt>] $/');
$telnet->open('???_IP');
$telnet->login('admin', '???_??????');
@array = $telnet->cmd(String =>'ping -c 10 4.2.2.4');
my $nonet = index($array[$#array-1], "100% packet loss", 1);
if ( ( $#array != 14 ) || ( $nonet > 0 ) )
{
print "rebooting modem \n";
$telnet->cmd('reboot');
$telnet->close;
}
$telnet->close;
| |
|
3.14, Vlad (??), 23:52, 15/05/2011 [^] [^^] [^^^] [ответить]
| +/– |
#!/usr/bin/perl
use Net::Telnet;
my @array = ();
$telnet = new Net::Telnet ( Timeout=>50,
Errmode=>'die',
Prompt => '/[\$%#E<gt>] $/');
$telnet->open('MODEM_IP');
$telnet->login('admin', 'MY_PASSWORD');
@array = $telnet->cmd(String =>'ping -c 10 4.2.2.4');
my $nonet = index($array[$#array-1], "100% packet loss", 1);
if ( ( $#array != 14 ) || ( $nonet > 0 ) )
{
print "rebooting modem \n";
$telnet->cmd('reboot');
$telnet->close;
}
$telnet->close;
| |
|
|
|