使用bash脚本删除远程计算机上的文件

时间:2011-10-31 15:01:49

标签: bash ssh expect delete-file

我想基本上从远程计算机复制文件,复制后删除它们。

我已设法使用expect和scp复制文件。 此外,设法删除脚本之外的文件,但无法在脚本中使用ssh命令。 这就是我所拥有的

#!/usr/bin/expect -f
log_user 1
set timeout -1
set pass "pass"


spawn scp  user@remote.machine.com:Desktop/LoginCheck/Login/* .
expect {
          password: {send "$pass\r" ; exp_continue}

}
ssh user@remote.machine.com 'rm -rf Desktop/LoginCheck/Login/*'
expect {
          password: {send "$pass\r" ; exp_continue}

}

因此代码的scp部分可行。 但是sshrm -rf 这是ssh的错误

invalid command name "ssh"
    while executing

有人可以提供工作脚本吗?

3 个答案:

答案 0 :(得分:1)

ssh命令不应该是新的生成器吗?顺便说一句,只需阅读wikipedia article on expect,其中一个“缺点”是:

  

针对Expect的一个不太明显的论点是它可以启用   次优解决方案。例如,系统管理员需要   登录到多个服务器以进行自动更改可能会使用Expect with   存储密码,而不是ssh代理密钥的更好解决方案。   自动化交互式工具的能力很有吸引力,但也有   经常是其他可以完成相同任务的选项   稳健的方式。

听起来你正在完成示例次优解决方案。如果您使用的是正确的ssh密钥对,则根本不需要预期。

答案 1 :(得分:1)

ssh替换为spawn ssh - ssh不是expect的内置命令。

答案 2 :(得分:1)

你刚刚错过了ssh行前面的spawn:

spawn ssh user@remote.machine.com 'rm -rf Desktop/LoginCheck/Login/*'

您还应该在它之前添加wait行,可能会检查scp的退出代码。

在任何情况下,不要使用expect来自动化ssh,使用ssh键和sh脚本,就像所描述的其他海报一样。