Итак, задача – на сервере под управлением FreeBSD сваять скриптик, который регулярно “ходит” по SFTP и “забирает” определенный файлик.
Поначалу задача показалась мне очень простой – пишем сценарий, скармливаем его sftp клиенту и вуаля.
На деле всё сильно осложнилось:
1. Сервер не принимал аутентификацию по ключам (себе то я сгенерировал, а вот закинуть ключ на сервер – облом), поэтому коннект осуществлялся только с вводом пароля
2. Передача пароля клиенту через конвеер либо перенаправлением ввода не срабатывал – ТОЛЬКО ручной ввод с клавиатуры
Далее гугл и статейка Автоматизация sftp
Установка expect и проба скрипта так же не увенчалась успехом, но и несколько часов мучения с перлом тоже – NET::SFTP ни в какую не хотел вставать на серваке.
После чего у меня возникла идея автоматического монтирования sftp – снова гугл и решение – sshfs !
Но опять же sshfs требует ручного ввода пароля – по идее раз замонтировал и работай, но аптайм сервера всё же не 100% и при перезагрузке монтировать нужно автоматом…
Снова затык!
Попровал объединить первый метод expect и sshfs, который и привёл к положительному результату после поисков в виде скриптика:
1 2 3 4 5 |
#!/usr/local/bin/expect spawn –ignore HUP /usr/local/bin/sshfs root@192.168.1.1:/usr/ /mountpoint expect “*assword*” send “SuperPass\r” expect “\n” |
Кидаем его в автозапуск – то есть сюды /usr/local/etc/rc.d
Чтоб запускался последним – имя делам начиная с Z
ЧТД