首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pexpect -静默ssh连接输出

Pexpect -静默ssh连接输出
EN

Stack Overflow用户
提问于 2010-09-22 02:33:12
回答 4查看 4.5K关注 0票数 5

我使用一个简单的pexpect脚本ssh到一台远程机器,并获取一个命令返回的值。有没有什么方法,pexpect或sshwise,我可以忽略unix问候?也就是说,从

代码语言:javascript
复制
    child = pexpect.spawn('/usr/bin/ssh %s@%s' % (rem_user, host))
    child.expect('[pP]assword: ', timeout=5)
    child.sendline(spass)
    child.expect([pexpect.TIMEOUT, prompt])
    child.before = '0'
    child.sendline ('%s' % cmd2exec)
    child.expect([pexpect.EOF, prompt])

    # Collected data processing
    result = child.before
    # logon to the machine returns a lot of garbage, the returned executed command is at the 57th position
    print result.split('\r\n') [57]
    result = result.split('\r\n') [57]

我如何才能简单地获得返回值,忽略“上次成功登录”和“(C)版权”之类的东西,而不必关心值的正确位置?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-22 03:01:59

如果您有权访问要登录的服务器,则可以尝试在主目录中创建一个名为.hushlogin的文件。这个文件的存在会使标准的MOTD问候语和类似的东西静默。

或者,尝试使用ssh -T,它将完全禁用终端分配;您不会得到shell提示,但仍然可以发出命令并读取响应。

ServerFault上也有一个类似的线程,它可能会对你有所帮助。

票数 5
EN

Stack Overflow用户

发布于 2010-09-22 03:00:41

如果该命令不是交互式的,那么您可以直接运行ssh HOST COMMAND来运行该命令,而无需进行任何登录操作。如果该命令是交互式的,那么您可以经常使用ssh选项(ssh -t HOST COMMAND)来强制执行伪-t分配,并欺骗远程进程,使其认为它正在连接到一个TTY。

票数 4
EN

Stack Overflow用户

发布于 2010-09-22 03:13:22

我已经使用paramiko自动化了ssh连接,我发现它很有用。它可以处理问候和静默执行。

  • http://www.lag.net/paramiko/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3763334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档