Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: bash, expect и cron - нетривиальная задачка...  (Прочитано 3892 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн jackie

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Встала жесткая необходимость автоматической перезагрузки роутера при падении инета.

Все бы ничего... Но по ssh подключения проходят только с запросом пароля (ключи добавить на роутер не выходит - там работает busybox-кастрат).

Соответственно, для авто-ввода пароля из скрипта используется expect. В итоге, имеем скрипт:

Цитировать
#!/bin/bash

host1=yandex.ru
host2=mail.ru

#при непрохождении пинга запускается expect
((ping -w5 -c3 $host1 || ping -w5 -c3 $host2) > /dev/null 2>&1) ||

/usr/bin/expect -c 'expect "\n" { eval spawn /usr/bin/ssh -oStrictHostKeyChecking=no -oCheckHostIP=no admin@192.168.1.1; interact; set prompt ":|#|\\\$"; interact -o -nobuffer -re $prompt return
send "mypassword\r"; set prompt ">"; interact -o -nobuffer -re $prompt return; send "reboot\r"; interact }'



Запускается скрипт по крону. (Запускается, проверено в логах). Но expect не срабатывает. Кстати, не срабатывает и без крона, при запуске из командной строки.

Удается запустить скрипт ТОЛЬКО по следующей схеме:
создается два скрипта

Цитировать

#!/bin/bash (ОБРАТИТЕ ВНИМАНИЕ НА ЭТУ СТРОКУ)

host1=mail.ru
host2=yandex.ru

((ping -w5 -c3 $host1 || ping -w5 -c3 $host2) > /dev/null 2>&1) || ./chknet1.sh

и второй chknet1.sh

Цитировать

#!/usr/bin/expect   (ОБРАТИТЕ ВНИМАНИЕ НА ЭТУ СТРОКУ)

eval spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no admin@192.168.1.1
#use correct prompt
set prompt ":|#|\\\$"
interact -o -nobuffer -re $prompt return
send "mypassword\r"

set prompt ">"
interact -o -nobuffer -re $prompt return
send "reboot\r"
interact


И то срабатывает НЕ ПО КРОНУ, а при запуске вручную и только из папки /tmp.  Очень хочется именно в bash делать одним скриптом...

Подскажите, что не так?
« Последнее редактирование: 16 Марта 2013, 00:58:03 от jackie »

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: bash, expect и cron - нетривиальная задачка...
« Ответ #1 : 16 Марта 2013, 00:33:57 »
может лучше curl заюзать, или web морда не доступна?
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн jackie

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: bash, expect и cron - нетривиальная задачка...
« Ответ #2 : 16 Марта 2013, 00:39:30 »

Нету морды :idiot2:

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: bash, expect и cron - нетривиальная задачка...
« Ответ #3 : 16 Марта 2013, 02:02:25 »
sshpass?

Оффлайн jackie

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: bash, expect и cron - нетривиальная задачка...
« Ответ #4 : 16 Марта 2013, 02:18:21 »
Пробовал и sshpass и fd0ssh. Долго танцевал с бубнами, не работают оба.

Тут решение совсем рядом...

КАК ОБЪЕДИНИТЬ в одном скрипте #!/bin/bash  и  #!/usr/bin/expect? Вот в этом, кажется, дело.

Если использую схему с двумя скриптами - из под root нормально запускается в командной строке, но CRON дает:
Mar 16 02:05:01 ubuntu CRON[26062]: (root) CMD (/bin/bash /usr/bin/scripts/1chknet.sh > /dev/null 2>&1)
Mar 16 02:05:07 ubuntu CRON[26060]: (CRON) error (grandchild #26062 failed with exit status 127
)

Если же использую "односкриптовую" схему - в кроне ошибок нет:
Mar 16 02:20:01 ubuntu CRON[26136]: (root) CMD (/bin/bash /usr/bin/scripts/1chknet.sh > /dev/null 2>&1)
но толку от запуска - никакого. И из под командной строки - ошибок нет, но результата тоже нет.
« Последнее редактирование: 16 Марта 2013, 02:25:59 от jackie »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: bash, expect и cron - нетривиальная задачка...
« Ответ #5 : 16 Марта 2013, 02:30:44 »
Пробовал и sshpass и fd0ssh. Долго танцевал с бубнами, не работают оба.
Дык, стоит разобраться, почему не работают, ибо когда я им последний раз пользовался, всё работало.
В любом случае, лог подключения где?

Оффлайн jackie

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: bash, expect и cron - нетривиальная задачка...
« Ответ #6 : 16 Марта 2013, 11:12:10 »

А где логи искать? в каком из файлов /var/log?

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: bash, expect и cron - нетривиальная задачка...
« Ответ #7 : 16 Марта 2013, 11:40:53 »
jackie,
ssh admin@192.168.1.1 reboot?
Wars ~.o

Оффлайн jackie

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: bash, expect и cron - нетривиальная задачка...
« Ответ #8 : 16 Марта 2013, 12:01:27 »
victor00000,

А в чем вопрос? Команда посылает reboot на адрес 192.168.1.1 от пользователя admin. Должен придти запрос на пароль. Дальше вступает expect.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: bash, expect и cron - нетривиальная задачка...
« Ответ #9 : 16 Марта 2013, 12:07:02 »
ssh root@192.168.1.1 reboot?
Wars ~.o

Оффлайн jackie

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: bash, expect и cron - нетривиальная задачка...
« Ответ #10 : 16 Марта 2013, 12:12:06 »
victor00000,

Я вас не понимаю.

Лучше подскажите где логи sshpass искать?
« Последнее редактирование: 16 Марта 2013, 12:14:04 от jackie »

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: bash, expect и cron - нетривиальная задачка...
« Ответ #11 : 16 Марта 2013, 12:14:10 »
jackie,
admin неработает, root одно.
Wars ~.o

Оффлайн jackie

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: bash, expect и cron - нетривиальная задачка...
« Ответ #12 : 16 Марта 2013, 12:21:19 »

На роутере нет пользователя root.

Лучше подскажите где логи sshpass искать?

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: bash, expect и cron - нетривиальная задачка...
« Ответ #13 : 16 Марта 2013, 12:24:47 »
jackie,
root создал пароль небыло только админ?

Пользователь решил продолжить мысль 16 Марта 2013, 12:31:27:
jackie,
покажи консоле, примерно у меня.
L~$ ssh root@victor00000.mooo.com -p 8081
Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 2.6.32-042stab061.2 i686)

 * Documentation:  https://help.ubuntu.com/

You have mail.
Last login: Fri Mar 15 07:21:50 2013 from 80.91.178.165
1
root@victor00000:~# reboot

Широковещательное сообщение от root@victor00000
(/dev/pts/2) в 8:20...

Система будет перезагружена СЕЙЧАС!
root@victor00000:~# Connection to victor00000.mooo.com closed by remote host.
Connection to victor00000.mooo.com closed.
L~$
« Последнее редактирование: 16 Марта 2013, 12:31:27 от victor00000 »
Wars ~.o

Оффлайн jackie

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: bash, expect и cron - нетривиальная задачка...
« Ответ #14 : 16 Марта 2013, 12:38:06 »
victor00000,

Cкрин консоли, что вы прикрепили - относится к перезагрузке Ubuntu. Пожалуйста, прочтите внимательно проблему: я из Ubuntu подключаюсь к роутеру.


Я хотел бы услышать ArcFi, по поводу логов и sshpass


« Последнее редактирование: 16 Марта 2013, 12:55:28 от jackie »

 

Страница сгенерирована за 0.072 секунд. Запросов: 25.