Unix 使用RCP和Expect进行无密码文件传输

Unix 使用RCP和Expect进行无密码文件传输,unix,expect,rcp,Unix,Expect,Rcp,我需要将文件从一台服务器传输到另一台服务器。我使用RCP命令执行同样的操作,它工作得很好。请查找以下代码: rcp tst.txt usrname@hostname:/home/username/destination_folder 我尝试使用Expect命令自动执行相同的操作,因此创建了下面提到的shell脚本: #!/bin/bash /usr/bin/expect -d<<EOD spawn rcp tst.txt usrname@hostname:/home/usernam

我需要将文件从一台服务器传输到另一台服务器。我使用RCP命令执行同样的操作,它工作得很好。请查找以下代码:

rcp tst.txt usrname@hostname:/home/username/destination_folder
我尝试使用Expect命令自动执行相同的操作,因此创建了下面提到的shell脚本:

#!/bin/bash
/usr/bin/expect -d<<EOD
spawn rcp tst.txt usrname@hostname:/home/username/destination_folder
expect "*userid@hostname's password:*"
send "mypassword\n"
EOD
#/bin/bash

/usr/bin/expect-d发送密码后,等待
rcp
完成,等待
eof

send "mypassword\r"
expect eof

如果密码少,那么在生成
rcp
后,除了
eof

之外,您能再解释一下吗?您确定需要使用
rcp
?这个命令已经过时多年了——它甚至没有包含在大多数现代操作系统版本和发行版中
scp
是一个更好的选择,如果它可用的话,您可以设置密钥以避免使用expect for密码。不要使用
\n
,而要使用
\r
。效果很好!!非常感谢你帮了我的忙。由于还有其他应用程序在等待数据,所以我有很大的压力来完成脚本和传输文件。我知道密钥生成是一条路要走,但由于缺乏时间,无法详细探讨它。非常感谢你帮了我的忙。
send "mypassword\r"
expect eof