我有一個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