使用 scp(otp 然后是密钥)时自动执行 mfa 的脚本,目前使用 python,欢迎提出其他建议

使用 scp(otp 然后是密钥)时自动执行 mfa 的脚本,目前使用 python,欢迎提出其他建议

我似乎找不到任何关于如何使用客户端脚本自动执行 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()

相关内容