【问题标题】:Pass dict as an argument over SSH to Python script将 dict 作为参数通过 SSH 传递给 Python 脚本
【发布时间】:2020-09-13 02:36:48
【问题描述】:

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

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

我收到一个错误:

sh:line:0 意外标记附近的语法错误 ('

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

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

有什么建议吗?

【问题讨论】:

  • 也许你应该把你的 dicts 转换成 json 字符串。
  • 谢谢。是的,我试过这样,在dict中“datatime”对象可用,它无法在json中序列化
  • 对于日期时间问题,使用strftimedatetime对象转换为字符串
  • 谢谢!正如建议的那样,我使用了 strftime,后来我使用 strptime 来获取日期时间对象

标签: python ssh parameter-passing


【解决方案1】:

使用 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')

你可以在 local_script.py 中使用 urldecode 和 json 短语来解码

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

【讨论】:

    猜你喜欢
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    相关资源
    最近更新 更多