我有一系列bash脚本,它们依赖于sudo
来ssh/scp一些具有root权限的主机。在
所以我制作了一个python脚本sshOK,它使用pexpect来处理主机sshing的所有细节,比如回答yes来存储密钥,如果主机可以ssh并且一切正常,则返回true。在
但是,每次在python中使用sudo时都会要求输入密码pexpect.spawn,而不是在bash脚本内部调用sudo时每五分钟一次。在
有什么办法打电话吗
child=pexpect.spawn('sudo ssh somehost', Pty=get_parent_pty())
或者类似于我的python脚本sshOK,它使我正在运行的shellsshOK记得自动化吗?根据我对sudo的RTFM'ed,pexpect调用需要共享{a3}来继承凭据或类似的东西。期望的行为是:
^{pr2}$而不是
[foo@bar bin]$ sshOK somehost
[sudo] password for foo:
Try ssh on somehost testing connection [--OK--]
[foo@bar bin]$ sshOK somehost
[sudo] password for foo:
Try ssh on somehost testing connection [--OK--]
[foo@bar bin]$
我们的目标是以后用更多的python和pexpect替换bash脚本,但是现在的障碍是能够多次调用同一个脚本,而不必输入令人讨厌的密码。在
另一种方法是将使用pexpect的部分提取到一个单独的脚本中,将该脚本添加到sudoers中,并让整个脚本以提升的方式运行。为每个用户添加ssh密钥不是一个选项。在
看来正确的答案是。。。在
没有
所有的通信都是在独立且完全不相交的[pt]实体中进行的。凭据无法传输,pexpect创建的pty不能链接到运行脚本的tty。在
相关问题 更多 >
编程相关推荐