Передача файла SFTP между двумя серверами и запуск этого скрипта с третьего сервера - PullRequest
0 голосов
/ 02 апреля 2020

Я разработал сценарий с использованием TCL ожидаемого. Использование сценария - если пользователь запускает его с сервера A, он будет проверять sftp передачу файла между сервером B и сервером C. Ниже приведен мой код:

#!/usr/bin/expect -f
lassign $argv 1 2
spawn ping -c 2 -i 3 -W 1 $1
expect  {
   " 0%" {puts "Source is rechable!"}
   " 100.0%" {puts "Source is not rechable.Please restart IPSEC and check!";exit 1}
        }
#SSH to remote server $1
spawn ssh -o StrictHostKeyChecking=no root@$1
expect {                
"Password:" {send "password\r";exp_continue}
"*#" {send "ssh successful\r";exp_continue}
   }
send "\n"
#Creating a file in remote server which will be transferred via sftp
send "touch /tmp/mfile\n"
expect "#"
send "chmod 755 /tmp/mfile\n"
expect "#"
#sftp to server$2
spawn sftp -o StrictHostKeyChecking=no root@$2
expect {                
"Password:" {send "Training\r";exp_continue}
"sftp>" {send "sftp successful\r";exp_continue}
       }
send "\n"
#sending remote file
send "put /tmp/mfile\n"
send "\n"
sleep 2
send "File send to Remote Server successfully\n"
expect "sftp>"
send "cd /root/\n"
expect "sftp>"
send "rename mfile mfile_1\n"
expect "sftp>"
#sending back the file
send "get mfile_1 /tmp\n"
expect "sftp>"
sleep 2
send "quit\n"
send "exit\n"

Проблема в том, что файл передается на сервер C с сервера B с этим кодом, но файл не отправляется обратно на сервер B. Я пока добавить в код другие логи c, но сначала хотел проверить, работает ли код basi c. Любая подсказка относительно возврата файла была бы полезна.

...