0

朋友们,

我编写了一个代码,该代码从用户那里获取输入,然后将我 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)
4

2 回答 2

0

因为它阻止了os.system(cmd1)
你对服务器进行 ssh 的目的是什么?也许你可以对paramiko有一个看法:一个 ssh python lib。如果您的 cmd 可能会阻塞,您还可以查看python 线程队列

就像 :

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 库,您可以使用subprocessssh 库:pylibssh2 python bindings for libssh2 library
for subprocess: subprocess_ssh.py

于 2013-09-07T04:37:06.733 回答
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...
......................................................................
于 2013-09-07T04:42:10.763 回答