我有一个Perl Expect.pm脚本,它执行一些中等复杂的东西,比如在多个远程Unix主机上打包应用程序,部署应用程序,检查日志等。rsh与Perl的Expect.pm有什么优势?
我的前任使用rsh编写了类似的脚本。
两者之间有更好的方法吗?或者我应该使用不同的东西?
我猜测有人会提出SSH;它基本上取代了rsh,对吧?不幸的是,SSH现在不适合我。
我应该补充的另一件事是,登录后我需要能够SUDO特定用户来执行远程主机上的大部分操作。
我有一个Perl Expect.pm脚本,它执行一些中等复杂的东西,比如在多个远程Unix主机上打包应用程序,部署应用程序,检查日志等。rsh与Perl的Expect.pm有什么优势?
我的前任使用rsh编写了类似的脚本。
两者之间有更好的方法吗?或者我应该使用不同的东西?
我猜测有人会提出SSH;它基本上取代了rsh,对吧?不幸的是,SSH现在不适合我。
我应该补充的另一件事是,登录后我需要能够SUDO特定用户来执行远程主机上的大部分操作。
他们做不同的事情。期望是一种脚本来编写手动响应的方式。 rsh - 远程shell,不受限制的shell,不幸的名称冲突 - 允许您在另一个系统上远程运行命令。
也就是说,使用rsh做远程命令,运行sudo等等的安全漏洞和其他缺点是巨大的。
如果在rsh
和telnet
之间选择通过expect
,我会选择rsh
。 Expect
脚本很脆弱。所有它需要打破一个是有人在远程机器上更改PS1
的值。使用rsh
也为您准备好一天,最终将进入90年代,并开始使用ssh
(因为您可以主要将rcp
改为scp
和rsh
改为ssh
并且一切仍然有效)。
我应该补充的另一件事是,登录后我需要能够SUDO特定用户来执行远程主机上的大部分操作。
为了解决这个问题一个特定点:使用rsh
(或ssh
),您可以指定远程会话成为其用户:
$ rsh -l username hostname
没有必要在这种情况下使用sudo
。由于安全问题,现在肯定是时间考虑ssh
。语法是相同的,但ssh
也可以让一个稍微不同的(我会说好)语法:
$ ssh [email protected]
我发现expect
过于挑剔,但我有这方面的经验还不够充分。
我可以看到这样做的多种方式:
所有的事情考虑,这是最轻微的骗子,你可以简单地做这样的事情
open my $fh, "|ssh [email protected] 'cat > /tmp/myscript'";
print $fh $script;
system qw(ssh [email protected]), "chmod u+x /tmp/myscript; /tmp/myscript; rm /tmp/myscript";
当然,你会在一些错误处理添加(未能打开,如果有什么/ tmp/myscript存在等),但这就是主意。
但是期望也允许远程登录到远程系统,这是我目前使用它的方式,所以它看起来像做了rsh所做的一切,等等。那么为什么我会使用rsh? – 2009-04-20 23:52:24
上帝,你不会的。可悲的是,telnet引发了相同的问题 - 比如你的密码在你的telnet会话中以明文形式漫游。 – 2009-04-20 23:56:21
是真的,我知道安全问题会出现,事实上我喜欢perl期望的一个原因是我可以简单地将初始登录线路从telnet更改为SSH,因为我已经有了它,我的脚本应该继续保持原样。所以基本上你可以看到没有理由使用rsh在这一点上? – 2009-04-21 00:00:15