通过SSH将dict作为参数传递给Python脚本

时间:2020-09-13 02:36:48

标签: python ssh parameter-passing

我正在尝试通过ssh模块使用os命令传递dict参数:

os.system(f'ssh remote_host python -u - {dict1} {dict2} < local_script.py')

我遇到错误:

sh:line:0意外令牌附近的语法错误('

将dict作为参数传递的正确语法是什么?

如果我传递字符串而不是dict,它可以正常工作。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

使用json和urlencode。

import urllib.parse
import json
dict1_j = urllib.parse.quote(json.dumps(dict1))
dict2_j = urllib.parse.quote(json.dumps(dict2))
os.system(f'ssh remote_host python -u - {dict1_j} {dict2_j} < local_script.py')

您可以使用urldecode和json pharse在local_script.py中对此进行解码

import json 
import urllib.parse 
dict1 = json.loads(urllib.parse.unquote(sys.argv[1])) 
dict2 = json.loads(urllib.parse.unquote(sys.argv[2]))
相关问题