Я пытаюсь вызвать ssh
из программы Python, но, похоже, игнорирует аргументы.Параметры, проигнорированные в вызове()
Это программа Python:
#!/usr/bin/python
from subprocess import Popen, PIPE, call
vm_name = 'vmName with-space'
vm_host = '[email protected]'
def ssh_prefix_list(host=None):
if host:
# return ["ssh", "-v", "-v", "-v", host]
return ["scripts/ssh_wrapper", "-v", "-v", "-v", host]
else:
return []
def start(vm_name, vm_host=None): # vm_host defaults to None
print "vm_host = ", vm_host
vbm_args = ssh_prefix_list(vm_host) + ["VBoxManage", "startvm", vm_name]
print vbm_args
return call(vbm_args, shell=True)
start(vm_name, vm_host)
обертка печатает количество аргументов, их значения, и называет SSH.
#!/bin/bash
echo Number of arguments: $#
echo ssh arguments: "[email protected]"
ssh "[email protected]"
Это выход.
$ scripts/vm_test.py
vm_host = [email protected]
['scripts/ssh_wrapper', '-v', '-v', '-v', '[email protected]', 'VBoxManage', 'startvm', 'atp-systest Clone']
Number of arguments: 0
ssh arguments:
usage: ssh [-1246AaCfgKkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-e escape_char] [-F configfile]
[-i identity_file] [-L [bind_address:]port:host:hostport]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-R [bind_address:]port:host:hostport] [-S ctl_path]
[-w local_tun[:remote_tun]] [[email protected]]hostname [command]
Это на Python 2.5.
Полу-шуточный ответ: попробуйте обновить Python и, возможно, проблема исчезнет. :-) – Kevin
Мы хотели бы обновить Python, но мы находимся на очень старой версии Ubuntu, и на нем много зависимостей. Мы работаем над этим. –