我似乎找不到任何关于如何使用客户端脚本自动执行 otp 和密钥登录的信息。我的服务器设置为需要 otp 然后需要密钥。客户端和服务器都运行 fedora linux。我之前的自动化脚本是 python,我正在尝试用 python 更新它。目前我有这个
import subprocess
import pexpect
... # code to find files and make them into a list and defining the command
otp = subprocess.run ('oathtool --totp -b my_secret_code', shell=True, stdout=subprocess.PIPE, text=True)
otp = otp.stdout
otp = otp.strip('\n')
run = pexpect.spawn(command)
run.expect('.*')
run.sendline(otp)
当我运行此程序时,服务器端接受 pam 身份验证,但在发生任何文件传输之前连接就关闭了。有什么建议可以解释为什么会发生这种情况吗?
答案1
修复得非常愚蠢。为了让其他人能看到我的修复,我在最后添加了 run .wait()。输入它让我怀疑我是否在进程完成之前自动关闭了连接。我的代码如下所示。不过,我愿意接受对我的脚本的批评,以使其变得更好。
import subprocess
import pexpect
# code to find files and make them into a list and defining the command
otp = subprocess.run ('oathtool --totp -b my_secret_code', shell=True, stdout=subprocess.PIPE, text=True)
otp = otp.stdout
otp = otp.strip('\n')
run = pexpect.spawn(command)
run.expect('.*')
run.sendline(otp)
run.wait()