#python #git #ssh #paramiko
#python #git #ssh #paramiko
Вопрос:
Я написал код для выполнения команды git на удаленном сервере, но я так и не выполнил
Шаг 1: Войдите на удаленный сервер
Шаг 2: измените каталог на репозиторий git
Шаг 3: выполните команду git clean -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, но не могу выполнить команду git
Комментарии:
1. я ничего не получаю в channel.recv()
Ответ №1:
Вам необходимо запустить оболочку перед отправкой команд оболочки:
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)
Комментарии:
1. Привет, почему, если я хочу добавить еще один канал.отправьте («git reset —hard»), как я сделаю это для меня после того, как 2 команды, 3-я команда не выполняется
2.
channel.send("git reset --hard")
— Вы чего-то не понимаетеn
.3. я поместил channel.send(«git reset —hard» ‘ n’) после выполнения 2-й команды вывод был на >
4. Не знаю, что вы точно имеете в виду, когда вывод был в > . Попробуйте отладить ее с помощью
pdb
и предоставьте дополнительную информацию. При необходимости задайте новый вопрос, поскольку это непросто для долгих обсуждений в комментариях .