python执行linux指令,如何输入字符串?

我想用python实现执行scp指令,然后输入yes,然后还要输入密码,我该如何实现?请指教。

img

引用 皆我百晓生 小程序回复内容作答:
要用Python执行Linux指令并输入字符串,可以使用subprocess模块的Popen方法来实现。下面是一个示例代码,演示了如何执行scp指令并输入字符串。

import subprocess

# 定义要执行的指令
command = 'scp your_file user@remote_host:your_directory'

# 创建一个Popen对象,并设置stdin参数为subprocess.PIPE
process = subprocess.Popen(command, stdin=subprocess.PIPE, shell=True)

# 输入字符串"yes"并回车
process.stdin.write(b'yes\n')

# 输入密码并回车
password = 'your_password'
process.stdin.write(password.encode('utf-8') + b'\n')

# 关闭stdin
process.stdin.close()

# 等待指令执行完成
process.wait()

# 获取返回结果
output = process.returncode
print(output)

在这个示例中,首先定义要执行的指令,并创建一个Popen对象。然后,通过process.stdin.write()方法,将需要输入的字符串以字节的形式写入到stdin中,并在输入结束后关闭stdin。最后,通过process.wait()等待指令执行完成,并通过process.returncode获取返回结果。

请注意,根据具体情况,您可能需要根据实际需要修改指令、字符串和其他参数。


【以下回答由 GPT 生成】

你可以使用Python标准库中的subprocess模块来执行Linux命令,并且通过它的communicate()方法来输入字符串。下面是一个示例代码,演示了如何使用subprocess模块实现你的需求:

import subprocess

def execute_scp_command():
    command = 'scp /log/prod/ota/ /update'
    process = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    # 输入"yes"
    process.stdin.write(b'yes\n')
    process.stdin.flush()

    # 输入密码
    password = 'your_password'
    process.stdin.write(f'{password}\n'.encode())
    process.stdin.flush()

    # 等待命令执行完成
    stdout, stderr = process.communicate()

    # 输出结果
    print(stdout)
    print(stderr)

execute_scp_command()

请尝试上述代码,并替换your_password为实际密码。如果在运行过程中遇到任何问题,请随时向我提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^