我有一个Perl脚本,它在多个远程Expect.pm主机上执行一些中等复杂的工作,比如打包应用程序、部署应用程序、检查日志等。
我的前任也曾使用rsh编写过类似的脚本。
两者之间有没有更好的方法?或者我应该使用完全不同的东西?
我猜会有人提出SSH;它基本上是rsh的替代品,对吧?然而,不幸的是,SSH现在不是我的选择。
我应该补充的另一件事是,在登录之后,我需要能够SUDO到特定用户,以便在远程主机上执行大多数操作。
发布于 2009-04-21 00:23:53
我应该补充的另一件事是,在登录之后,我需要能够SUDO到特定的用户,以便在远程主机上执行大多数操作。
为了解决这一点:使用rsh (或ssh),您可以指定要成为远程会话中的哪个用户:
$ rsh -l username hostname在这种情况下,不需要使用sudo。由于安全问题,现在绝对是研究ssh的时候了。语法是相同的,但ssh还允许稍微不同(我想说更好)的语法:
$ ssh username@hostname我发现expect太挑剔了,但我使用它的经验并不丰富。
发布于 2009-04-20 23:50:48
他们做了不同的事情。Expect是一种编写脚本的方式,否则将是手动响应。rsh --远程shell,而不是受限shell,一个不幸的名称冲突--允许您在另一个系统上远程运行命令。
也就是说,使用rsh执行远程命令、运行sudo等的安全漏洞和其他缺点是巨大的。
发布于 2009-04-22 13:10:47
我可以看到有多种方法可以做到这点:
考虑到所有的事情,这是最小的缺点,因为你可以简单地做一些事情,比如
open my $fh, "|ssh user@host 'cat > /tmp/myscript'";
print $fh $script;
system qw(ssh user@host), "chmod u+x /tmp/myscript; /tmp/myscript; rm /tmp/myscript";当然,您可以添加一些错误处理(打开失败,如果/tmp/myscript存在怎么办,等等),但这就是我们的想法。
https://stackoverflow.com/questions/770515
复制相似问题