сценарий оболочки для перемещения файлов с одного сервера на другой с использованием sftp - PullRequest
0 голосов
/ 07 января 2020

Здесь я перемещаю jars с сервера A на сервер B, используя sftp:

[mars@server33 ND_Jars]$ ls
   abc-5.5.0.jar     
   abc1-5.4.3.jar    
   abc2-5.5.0.jar   
   abc3-5.5.0.jar   
   abc4-com-5.5.0.jar

[mars@server33 ND_Jars]$ ll    
total 3552    
-rw-rw-r-- 1 mars mars 1184548 Jan  7 14:32 abc1-com-5.5.0.jar     
-rw-rw-r-- 1 mars mars 1130509 Dec 26 11:30 abc2-5.4.3.jar    
-rw-rw-r-- 1 mars mars   24694 Dec 30 17:27 abc3-5.5.0.jar    
-rw-rw-r-- 1 mars mars   45454 Dec 18 16:25 abc4-5.5.0.jar    
-rw-rw-r-- 1 mars mars 1236350 Jan  7 14:32 abc-5.5.0.jar    
[mars@server33 ND_Jars]$ sftp sftpuser@5     
Connecting to 10.0.14.19...     
sftpuser@10.0.14.19's password:    
sftp> cd sftp_dir     
sftp> put abc-5.5.0.jar    
Uploading abc-5.5.0.jar to /sftp_dir/abc-5.5.0.jar

Я хочу сценарий оболочки, чтобы я мог выполнять все эти команды на go, но я не знать, как жестко кодировать (sftpuser@10.0.15.19 и пароль) в сценарии оболочки.

Написанный мною сценарий оболочки:

for f in *.jar
do  
    cp -v "$f" /home/webapps/project1/folder2/"${f%.jar}"$(date +%m%d%y).jar  
done 

Внутри этого сценария я просто копирую файлы в другое место.

Мне нужен сценарий оболочки для выполнения mv jar-файлов с одного сервера на другой, например, как указанная выше команда sftp.

Ответы [ 2 ]

3 голосов
/ 07 января 2020

Используйте scp.

for f in *.jar
do  scp "$f" sftpuser@10.0.14.19:/home/webapps/project1/folder2/"${f%.jar}"$(date +%m%d%y).jar  
done 

Если возможно, настройте ключ publi c, чтобы в сценарии не требовался пароль. Хорошие системы перевода, такие как scp и sftp, будут намного проще автоматизировать таким образом.

1 голос
/ 07 января 2020

Если на вашем сервере установлена ​​утилита expect, вы можете использовать ее следующим образом:

expect <<EOF
set timeout -1
spawn /usr/bin/sftp ${user_name}@${HOSTNAME}
expect "password:"
send "${passwd}\r"
expect "sftp>"
send "cd /the_path/to_put_files/\r"
expect "sftp>"
send "mput *\r"
expect "sftp>"
send "bye\r"
EOF

set timeout -1 == for sending n number of files to remote server without timeout constraint.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...