由于if循环,循环没有运行

时间:2013-09-07 04:15:10

标签: python-3.x

我编写了一个代码,用于从用户那里获取输入,然后将我ssh到服务器。但这只是工作一次,尽管存在无限循环。我想要的是while循环一次又一次地运行。但在给用户输入后,它会运行一次但不会再运行。

while True:
    print('Enter name of server...')

    print('......................................................................')

    server = input ('')

    if server == '1':
        cmd1='p -ssh 192.168.1.12'
        os.system(cmd1)
    if server == '2':
        cmd1='p -ssh 192.168.1.13'
        os.system(cmd1)
    if server == '3':
        cmd1='p -ssh 192.168.1.14'
        os.system(cmd1)

2 个答案:

答案 0 :(得分:0)

因为它在os.system(cmd1)被屏蔽了
ssh服务器的目的是什么?也许你可以查看paramiko:ssh python lib。如果您的cmd可能会屏蔽,您还可以在python threading Queue

上查看

就像:

import threading

class ssh_client(threading.Thread):
    def __init__(self, ssh_host):
        super(ssh_client, self).__init__()
        self.ssh_host = ssh_host

    def run(self):
        """Do something
        """
        pass

    ...


if __name__ == "__main__":
    while True:
        print('Enter name of server...')

        print('......................................................................')

        server = input ('')

        if server == '1':
            ssh_client_1 = ssh_client("192.168..1.12")
            ssh_client_1.start()
        if server == '2':
            ssh_client_1 = ssh_client("192.168..1.13")
            ssh_client_2.start()

对于python3用户,paramiko不是兼容python3的ssh库,可以使用subprocess或ssh库:pylibssh2 python bindings for libssh2 library
对于子进程: subprocess_ssh.py

答案 1 :(得分:0)

是的,这是'p -ssh 192.168.1.14'命令的问题。

例如,如果您只使用ssh命令,则循环工作,当您退出远程服务器时,再次要求您输入“输入服务器名称”

例如:

>>> while True:

...   print('Enter name of server...')
...   print('......................................................................')

...   server = input ('')
...   if server == '1':
...     cmd1='ssh remote_server_1'
...     os.system(cmd1)

...   if server == '2':
...     cmd1='ssh remote_server_2'
...     os.system(cmd1)

...   if server == '3':
...     cmd1='ssh remote_server_3'
...     os.system(cmd1)
... 

Enter name of server...
......................................................................
'1'
erica@remote_server's password: 

       __|  __|_  )  Amazon Linux AMI
       _|  (     /     Beta
      ___|\___|___|

See /usr/share/doc/system-release-2011.02 for latest release notes. :-)
[erica@remote_server ~]$ exit
logout
Connection to remote_server closed.
0
Enter name of server...
......................................................................