2016-10-25 8 views
1

Я написал код для выполнения команды Git на удаленном сервере, но я никогда не выполнитсявыполнить команду GIT в удаленной машине с помощью paramiko

Шаг 1: Войдите в систему, чтобы удаленный сервер
Шаг 2: изменить реж к мерзавец хранилище
Шаг 3: выполнить мерзавец чистый -fdx команда

Ниже приведен пример кода

try: 
     ssh = paramiko.SSHClient() 
     sssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
     ssh.connect(dummyipaddress, username="john", password="philips") 
except (paramiko.BadHostKeyException, 
     paramiko.AuthenticationException, paramiko.SSHException) as e: 
     print str(e) 
     sys.exit(-1) 
try: 
     channel = ssh.get_transport().open_session() 
     channel.send("cd /path to git dir"+ '\n') 
     time.sleep(5) 
     print channel.recv(1024) 
     channel.send("git clean -fdx"+'\n') 
     print chan.recv(1024) 
except paramiko.SSHException as e: 
     print str(e) 
     sys.exit(-1) 

Но проблема в том, что я могу в состоянии изменить в репозиторий, но не в состоянии выполнить команду GIT

+0

я ничего в канале не получать .recv() –

ответ

0

Вам нужно запустить оболочку перед отправкой команды оболочки:

channel = ssh.get_transport().open_session() 
channel.get_pty()   # get a PTY 
channel.invoke_shell() # start the shell before sending commands 
channel.send("cd /path to git dir"+ '\n') 
time.sleep(5) 
print channel.recv(1024) 
channel.send("git clean -fdx"+'\n') 
print chan.recv(1024) 
+0

спасибо за помощь :) Кажется, что работает –

+0

Привет whjm, если я хочу добавить еще один channel.send («git reset --hard»), как я сделаю это для меня после 2 команд. 3-я команда не Выполнение –

+0

'channel.send (" git reset --hard ")' - Вам не хватает '\ n'. – pynexj