去年的advent里有这么篇文章:
http://perlchina.org/advent/2009/SSHBatch.html

<http://perlchina.org/advent/2009/SSHBatch.html>

2010/11/1 liseen <[email protected]>

> HI
>
> 如果你是集群操作, 建议你安装 sshbatch 模块
> install:
>       sudo cpan SSH::Batch
>
> 那么你就可以使用
>        atnodes 'sudo ls /tmp' 'host[1-8]'.example.com
>
> 如果你的sudo需要终端, 可以使用 -tty 选项, 这个选项要求版本在0.024之上。你如果要使用这个功能可以从github上安装,
> 或者等一天之后从cpan 上安装。
>
>       atnodes -tty 'sudo ls /tmp' 'host[1-8].example.com'
>
> liseen
>
>
> 2010/11/1 liseen <[email protected]>
>
>  ssh u...@hostname 'sudo ls /tmp'
>>
>> 这样直接执行可以吗?
>>
>>
>> 2010/10/30 frostyplanet(plan) <[email protected]>
>>
>> expect的缺陷在于需要检测shell提示符,因为提示符会根据使用环境而不同。
>>> 如果要用expect来登录,最好要给ssh加上 "StrictHostKeyChecking=no" 之类的参数
>>> 如果能用ssh信任关系来绕过ssh密码这步的话就最好了,
>>> ssh可以用非交互方式执行命令,具体查看man ssh。
>>>
>>> On Oct 29, 9:59 pm, emacs ray <[email protected]> wrote:
>>> > 我需要登录到一些机器的 sudoer 用户上用 sudo 执行一些命令。
>>> > 怎么等待远程机器把命令执行完?检测 shell 提示符吗?
>>>
>>> --
>>> 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
>>> 要向此网上论坛发帖,请发送电子邮件至 [email protected]。
>>> 要取消订阅此网上论坛,请发送电子邮件至 
>>> [email protected]<perlchina%[email protected]>
>>> 。
>>> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
>>>
>>>
>>
>  --
> 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
> 要向此网上论坛发帖,请发送电子邮件至 [email protected]。
> 要取消订阅此网上论坛,请发送电子邮件至 
> [email protected]<perlchina%[email protected]>
> 。
> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
>

-- 
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 [email protected]。
要取消订阅此网上论坛,请发送电子邮件至 [email protected]。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

回复