Python 使用paramiko在远程计算机中执行git命令

Python 使用paramiko在远程计算机中执行git命令,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

我已经编写了一个代码来在远程服务器上执行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命令

在发送shell命令之前,您需要启动shell:

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)

在发送shell命令之前,需要启动shell:

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)

我在channel.recv()中没有得到任何东西。recv()我在channel.recv()中没有得到任何东西。如果我想再添加一个channel.send(“git reset--hard”),我将如何在两个命令后为我这样做第三个命令未执行
channel.send(“git reset--hard”)
--您缺少
\n
。我已放置channel.send(“git reset--hard”+“\n”)在第二个命令运行后,输出位于>不知道您所说的输出位于>的确切含义。尝试使用
pdb
调试它,并提供更多信息。如果有必要,可以问一个新问题,因为在评论中进行长时间的讨论并不容易。您好,如果我想再添加一个频道,请问whjm。send(“git reset--hard”)在2个命令之后,我将如何为我这样做?第三个命令没有执行
频道。send(“git reset--hard”)
--您缺少
\n
。我已经放置了channel.send(“git reset--hard”+“\n”)第二个命令运行后,输出位于>不知道您所说的输出位于>的确切含义。尝试使用
pdb
调试它,并提供更多信息。如果有必要,问一个新问题,因为在评论中进行长时间的讨论并不容易。