Chinaunix

标题: Net::OpenSSH 疑问 [打印本页]

作者: bluesmile11    时间: 2013-07-28 18:09
标题: Net::OpenSSH 疑问
朋友们好,我想用perl实现这样一个功能

有多台远端账户与密码相同的服务器,想通过perl脚本在本地登录远端服务器(是SSH 登录上去,相当于打开一个新的会话 ),不加参数的情况下,用普通账户登录,加参数后用root登录
,有什么好思路吗?

大概了解了一下Net::OpenSSH
1.貌似是一定要用证书,不能用user和password
2.通过Net::OpenSSH 在远端机器上执行命令可以,但是不能登录上去
作者: yybmsrs    时间: 2013-07-29 10:12
可以用密码
登陆上去和执行命令有什么区别?
作者: bluesmile11    时间: 2013-07-29 22:01
回复 2# yybmsrs

我们是这样设定,在跳板机上部署这个脚本,然后通过跳板机访问我们的服务器
   
作者: py    时间: 2013-07-29 22:41
bluesmile11 发表于 2013-07-29 22:01
回复 2# yybmsrs

我们是这样设定,在跳板机上部署这个脚本,然后通过跳板机访问我们的服务器


你没回答2楼的问题
作者: jason680    时间: 2013-07-30 11:55
回复 1# bluesmile11

How about this ...

        $oNet_ssh = Net::OpenSSH->new(
           $sIP, user=> $sUser, passwd=>$sPsw, 'timeout' =>30,
           master_opts => [-o => "StrictHostKeyChecking=no"],
        );

         $oNet_ssh->capture2("YOUR COMMAND ...");


作者: ackor    时间: 2013-07-30 13:39
本帖最后由 ackor 于 2013-07-30 13:39 编辑

用expect,这个可以用帐号和密码登陆。
作者: zz028    时间: 2013-07-31 11:17
我是调用的这个脚本,需要安装expect-devel ,和tcl包,希望对你有帮助
#!/usr/bin/expect
set timeout 10
set host [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
set src_file [lindex $argv 3]
set dest_file [lindex $argv 4]
spawn scp $src_file $username@$hostdest_file
expect {
"(yes/no)?"
   {
    send "yes\n"
    expect "*assword:" { send "$password\n"}
}
"*assword:"
{
send "$password\n"
}
}
expect "100%"
expect eof






欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2