LINUX.ORG.RU
ФорумAdmin

Скрипт на expect. Как сохранять вызываемое по cron ssh-соединение?


0

0

Нужно переодически устанавливать shh-туннель. написал скрипт

Если вызывать из консоли - все ок - устанавливается соединение Если вызывать по cron - то скрипт завершается и соединение рвьеться.

Прикрутил перед выходом из скрипта sleep 3600 - ожидать один час, но это жуткий костыль.

Как бы исправить, чтобы по крону тоже нормально работало?

Сам скрипт такой:

#!/usr/bin/expect -f
spawn ssh -R Port:IPAddress:Port Username@IPAddress
expect "?assword:"
send "TheSecretPassword\r"
expect "Welcome!"
interact

лучше везде полные пути писать
как минимум PATH в консоли и в cron-е отличаются

hizel ★★★★★
()

> Если вызывать из консоли - все ок - устанавливается соединение Если вызывать по cron - то скрипт завершается и соединение рвьеться.

Вопрос на внимательность: от какого пользователя запускается ssh по крону и от какого в интерактивном режиме?

> send "TheSecretPassword\r"

Настрой авторизацию по ключам и не майся дурью.(c)

gaa ★★
()
Ответ на: комментарий от hizel

А тут в одном месте PATH нужен - то, что программа на expect выполняется. (#!/usr/bin/expect -f)

Остальное - это уже команды языка expect. Или я чего-то не понимаю?

hiromant
() автор топика
Ответ на: комментарий от gaa

>Настрой авторизацию по ключам и не майся дурью.(c)

Я б с удовольствием, но коннекчусь не к своему серваку с ограниченной в правах учетной записью. Править конфиг sshd нет возможности.

hiromant
() автор топика
Ответ на: комментарий от gaa

> Вопрос на внимательность: от какого пользователя запускается ssh по крону и от какого в интерактивном режиме?

У меня ж username явно указан. Само соединение устанавливается, иначе вариант с sleep не работал бы. без sleep оно рветься сразу после завершения скрипта по крону. Чем бы заменить expect'овский interact - он cron'у не нравиться...

hiromant
() автор топика
Ответ на: комментарий от Valmont

> А причем тут sshd конфиг? Неужели там запрещена авторизация по ключам?

Да, у меня только тупо пароль есть.

hiromant
() автор топика
Ответ на: комментарий от hiromant

Исходя из вашего ответа, все таки рекомендую попробовать настроить авторизацию по ключам. То, что у вас только пароль есть - ничего не значит. Если это та информация, на которою вы опираетесь, когда пишете, что там запрещены другие методы авторизации. По дефолту ключи разрешены наверно во всех unix-like системах.

Valmont ★★★
()

настройка авторизации по ключу

ssh-copy-id Username@IPAddress

спросит пароль, после этого ссх спрашивать не будет.

а сессию стартовать ssh -fN

anonymous
()

> Сам скрипт такой:
>
> #!/usr/bin/expect -f
> spawn ssh -R Port:IPAddress:Port Username@IPAddress
> expect "?assword:"
> send "TheSecretPassword\r"
> expect "Welcome!"
> interact

1. Настроить беспарольную аутентификацию (например, по RSA ключу).
2. ssh -Nf -R nnn:aa.bb.cc.dd:mmm far.beyond.your.reality

Dselect ★★★
()
Ответ на: комментарий от Teak

Спасибо всем, попробую чуть позже, отпишусь PS я не кросспостю, если ты про тему, где анонимус про аналог expect спрашивает

hiromant
() автор топика
Ответ на: комментарий от Valmont

По ключам авторизацию настроил. Спасибо за наводку.

hiromant
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.