如何在python中解析变量到subprocess.run

问题描述 投票:-1回答:1

我是python的新手。我有 install.py。下面是它的变量存储值。当执行abc.py时,无法将文件从远程复制到本地服务器。在子进程命令中硬编码时,能够传输文件,但在子进程中传递变量时,无法工作。参考了其他文章,但没有结果。

srcuser=abcd srcip=x.x.x.x srcpath=/home/sum/mnt/ sshprkey=/home/xyz/id_rsa
subprocess.run(['sudo', 'scp', '-P22', '-i sshprkey', 'srcuser@srcip:srcpath/"mongodb-org-3.6.repo"', '/etc/yum.repos.d/'])

谢谢你

python subprocess
1个回答
1
投票

试试这个,我们将shell关键字参数赋值为true。

subprocess.run(['sudo', 'scp', '-P22', '-i sshprkey', 'srcuser@srcip:srcpath/"mongodb-org-3.6.repo"', '/etc/yum.repos.d/'], shell=True)

使用Popen(从python文档中复制)在Unix上,如果shell=True,shell默认为binsh。如果args是一个字符串,那么这个字符串指定了要通过shell执行的命令。这意味着该字符串的格式必须与在 shell 提示符下输入时的格式完全一致。这包括,例如,引用或反斜杠转义文件名中的空格。如果args是一个序列,则第一项指定命令字符串,任何附加项将被视为shell本身的附加参数。

你需要确保第一个首项指定的是命令字符串。

Popen(['sudo scp', '-P22', '-i sshprkey', 'srcuser@srcip:srcpath/"mongodb-org-3.6.repo"', '/etc/yum.repos.d/'],shell=True)
© www.soinside.com 2019 - 2024. All rights reserved.