Übergeben Sie dict als Argument über SSH an Python-Skript
Sep 12 2020
Ich versuche, dikt-Argumente mit dem sshBefehl über das osModul zu übergeben:
os.system(f'ssh remote_host python -u - {dict1} {dict2} < local_script.py')
Ich erhalte eine Fehlermeldung:
sh: line: 0 Syntaxfehler in der Nähe eines unerwarteten Tokens ('
Was ist die richtige Syntax, um Dikt als Argument zu übergeben?
Wenn ich einen String anstelle eines Diktats übergebe, funktioniert das einwandfrei.
Irgendwelche Vorschläge?
Antworten
2 KavinduPasanKavithilaka Sep 13 2020 at 02:50
Verwenden Sie json und 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')
Und Sie können urldecode und json pharse verwenden, um dies in local_script.py zu dekodieren
import json
import urllib.parse
dict1 = json.loads(urllib.parse.unquote(sys.argv[1]))
dict2 = json.loads(urllib.parse.unquote(sys.argv[2]))