Wait until task is completed on Remote Machine through Python

前端 未结 2 1664
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-03 05:51

I am writing a program in python on Ubuntu. In that program I am trying to print a message after completing a task \"Delete a File\" on Remote machine (RaspberryPi), connect

2条回答
  •  醉酒成梦
    2020-12-03 06:36

    This is indeed a duplicate of paramiko SSH exec_command(shell script) returns before completion, but the answer there is not terribly detailed. So...

    As you noticed, exec_command is a non-blocking call. So you have to wait for completion of the remote command by using either:

    • Channel.exit_status_ready if you want a non-blocking check of the command completion (i.e.: pooling)
    • Channel.recv_exit_status if you want to block until the command completion (and get back the exit status — an exit status of 0 means normal completion).

    In your particular case, you need the later:

    stdin, stdout, stderr = client.exec_command(filedelete)  # Non-blocking call
    exit_status = stdout.channel.recv_exit_status()          # Blocking call
    if exit_status == 0:
        print ("File Deleted")
    else:
        print("Error", exit_status)
    client.close()
    

提交回复
热议问题