2015-03-24 4 views
2

У меня есть этот пример:питон телнет клиента через сокет с автодополнению

# s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
# s.settimeout(2) 

# connect to remote host via s.connect((host, port)) 


while 1: 
    socket_list = [sys.stdin, s] 

    # Get the list sockets which are readable 
    read_sockets, write_sockets, error_sockets = select.select(socket_list , [], []) 

    for sock in read_sockets: 
     #incoming message from remote server 
     if sock == s: 
      data = sock.recv(4096) 
      if not data : 
       print 'Connection closed' 
       sys.exit() 
      else : 
       #print data 
       sys.stdout.write(data) 

     #user entered a message 
     else : 
      msg = sys.stdin.readline() 
      s.send(msg) 

Он работает, но дискомфортно без завершения Баша.

Как я могу добавить «вкладку» автозаполнение, как это:

[email protected]:~$ pyt  <<< (PRESS TAB) 
[email protected]:~$ python <<< Auto complete 

ответ

1

Функция автозаполнения происходит от вашей оболочки программы (например, Баш) и при запуске сценария он больше не доступен, поскольку терминал взаимодействует с вашей программой.

Я боюсь, что вам придется реализовать свое собственное завершение.

+0

Команда telnet по умолчанию (например, «telnet XXX.XXX.XXX.XXX») работает с завершением вкладки. Имеет ли эта команда его собственное завершение? – karl

+0

Это потому, что вы находитесь в своей оболочке (bash) при вводе «telnet xxx.xxx ...», но когда вы запустили интерпретатор python, ваш терминал взаимодействует с ним, а не с оболочкой (bash). – Lachezar

Смежные вопросы