2016-03-15 2 views
0

У меня есть сценарий OpenSSH sftp, который передает файлы с сервера SFTP (Solaris) на сервер приложений (Linux). Здесь сценарий - передача происходит из разных мест, и одни и те же файлы передают резервное копирование на другое место SFTP-сервера. Но если какая-либо из передач не выполняется из-за того, что файл недоступен, он не продолжает оставшиеся команды sftp. Вместо этого он просто выходит из кода. Ниже приведен сценарий.Сценарий sftp, если один из операторов sftp не работает в Linux

export SSHPASS=******* 
/usr/local/bin/sshpass -e sftp -oPort=22 -oBatchMode=no -b - [email protected] << ! 

cd /home/rkwlahtt/Inbound 
mget *.* 
rm *.* 
cd /home/rkwlahtt/Inbound/Adhoc 
mget *.* 
rm *.* 
cd /home/rkwlahtt/Archive/Inbound 
mput *.TXT 
mput *.txt 
cd /home/rkwlahtt/Archive/Adhoc 
mput *.xlsx 
bye 
! 

Здесь в приведенном выше сценарии, когда я пытаюсь mget из /home/rkwlahtt/Inbound папки и если файл не существует, он просто выходит из sftp кода вместо того, чтобы идти к следующей команде, которая cd /home/rkwlahtt/Inbound/Adhoc и mget. Это та же ситуация, в то время как mput тоже.

Это первый раз, когда мы переходим из разных мест в том же коде. И это создает проблему в нашей передаче.

Пожалуйста, дайте мне знать, что можно сделать для решения этой проблемы.

ответ

0

Вы можете подавить прерывание по ошибке на основе каждой команды, используя - префикс:

-mget *.* 

Другие варианты, чтобы снять выключатель -b -.

Переключатель вызывает прерывание после любого отказа.

Даже без переключателя вы все равно можете передавать команды с помощью перенаправления ввода, как вы это делаете.

Хотя вам нужно убедиться, что никакая команда не потребует ввода. Как и тогда, некоторые из ваших команд будут использоваться в качестве ввода вместо того, чтобы выполняться.

+0

Прохладный. Это сработало. Так что же означает -b -. Я думал, что -b был для пакетного файла. И это заявление строки /usr/local/bin/sshpass -e sftp -oPort = 22 -oBatchMode = no -b - [email protected] < user3441224

+0

'-b' делает две вещи. Сначала он включает пакетный режим (= прерывание любой ошибки), во-вторых, он устанавливает файл сценария. За исключением случаев, когда вы используете '-' вместо имени файла сценария, в этом случае команды считываются со стандартного ввода, что по умолчанию. Вам не нужен второй эффект (поскольку вы все равно используете '-'), и вы не хотите первого. См. Страницу man 'sftp': https://www.freebsd.org/cgi/man.cgi?query=sftp&sektion=1 –

+0

в порядке .. Большое спасибо Мартину. – user3441224

 Смежные вопросы

  • Нет связанных вопросов^_^