我有一个python脚本与一个web主机,用户名和密码变量,我试图传递到同一个python脚本的shell命令。
output = subprocess.check_output(['curl -s -G -u username:password -k "https://webhost/something/something"'], shell=True, encoding='utf-8')
你能告诉我怎么做吗?我试了很多方法,但都不起作用。
感谢不要构造一个字符串供shell解析;只要提供一个清单。该列表可以直接包含字符串值的变量(或由变量构造的字符串)。
username = ...
password = ...
url = ...
output = subprocess.check_output([
'curl',
'-s',
'-G',
'-u',
f'{username}:{password}',
'-k',
url
], encoding='utf-8')
试试这个,
username = 'abc'
password = 'def'
webhost = '1.2.3.4'
output = subprocess.check_output([f'curl -s -G -u {username}:{password} -k "https://{webhost}/something/something"'], shell=True, encoding='utf-8')
它被称为f字符串。https://docs.python.org/3/tutorial/inputoutput.html
在字符串开始前加一个f,然后将要插入的变量用花括号括起来。
您可以使用此语法将变量传递给字符串。
您也可以像下面这样将变量作为列表传递,命令中的每个参数都是一个单独的项,您可以在列表项上使用f字符串,您想要解析,像这样,
username = 'abc'
password = 'def'
webhost = '1.2.3.4'
output = subprocess.check_output(['curl',
'-s',
'-G',
'-u',
f'{username}:{password}',
'-k',
f'"https://{webhost}/something/something"'],
encoding = 'utf-8')