小篇利用python寫一個SSH連線

結果它一般linux不一樣 

沒辦法用

stdin, stdout, stderr = ssh.exec_command(command)

又很多篇都用這個例子,誤我很時間

 

最後改寫如下,用來取代putty的ssh連線的功能

 

import paramiko
import  time


#comand為命令的副程式
def command(comand):
    channel.send(comand)
    channel.send("\n")
    time.sleep(5)
    if comand =="tree" or "uci" or "sh":
        res = channel.recv(65535).decode('utf8')
    else:
        res = channel.recv(65535)

    print(res)
    print('**********************************************************')


# 定義 syslogin.log來記錄
paramiko.util.log_to_file('syslogin.log')
# 定義 ssh 為使用 paramiko.SSHClient()
ssh = paramiko.SSHClient()
# 設定自動加入 遠端主機的 SSH Key
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())




 # 設定連接 ssh 的主機名稱, 使用者名稱, s密碼
ssh.connect('192.168.2.100', port=22,username='araknis',password='araknis', timeout=4)
print('start connect to dut')
print("===========================welcom to CLI===============================")


#一開始會卡住 ,作一些處理
stdin, stdout, stderr = ssh.exec_command('',get_pty=True)
#print(stdin.channel.eof_received)
timeout = 5
endtime = time.time() + timeout
while not stdout.channel.eof_received:
   time.sleep(1)
   if time.time() > endtime:
     stdout.channel.close()
     break
#stdout.read()
#stdout.flush()
print(stdout.read())
#nbytes = 0
#time.sleep(2)
#print("===========================welcom to CLI===============================")

channel = ssh.invoke_shell()


T=True

while (T==True):
    com=input(" please input command: ")
    command(str(com))
    time.sleep(2)
    q="reboot"
    q1="logout"
    if(str(com)== q or str(com)== q1  ) :
        T=False
    print(T)
channel.close()



---------------------------------result---------------------------------------------

C:\Users\800213\PycharmProjects\firefoxdemo\venv\Scripts\python.exe "C:/Users/800213/PycharmProjects/firefoxdemo/ssh toputty.py"
start connect to dut
===========================welcom to CLI===============================
b'\x1b[1;31m*** Hi araknis (Privilege: Admin), welcome to use cli(V-1.9.11) ***\r\n\x1b[m---========= Commands Help =========---\r\n      stat -- Status\r\n       sys -- System\r\n    wless2 -- 2.4G-Wireless\r\n    wless5 -- 5G-Wireless\r\n      mgmt -- Management\r\n      tree -- Tree\r\n      help -- Help\r\n    reboot -- Reboot\r\n    logout -- Logout\r\n\x1b[1;31maraknis\x1b[m@\x1b[1;36man700outdoor\x1b[m:\x1b[1;32m/\x1b[m# '
 please input command: help
*** Hi araknis (Privilege: Admin), welcome to use cli(V-1.9.11) ***
---========= Commands Help =========---
      stat -- Status
       sys -- System
    wless2 -- 2.4G-Wireless
    wless5 -- 5G-Wireless
      mgmt -- Management
      tree -- Tree
      help -- Help
    reboot -- Reboot
    logout -- Logout
araknis@an700outdoor:/# help
---========= Commands Help =========---
      stat -- Status
       sys -- System
    wless2 -- 2.4G-Wireless
    wless5 -- 5G-Wireless
      mgmt -- Management
      tree -- Tree
      help -- Help
    reboot -- Reboot
    logout -- Logout
araknis@an700outdoor:/# 
**********************************************************
True
 please input command: sys
sys
  System
---========= Commands Help =========---
    opmode -- Operation mode
        ip -- IP settings
       stp -- Spanning tree settings
      help -- Help
      exit -- Exit
araknis@an700outdoor:/sys# 
**********************************************************
True
 please input command: exit
exit
araknis@an700outdoor:/# 
**********************************************************
True
 please input command: help
help
---========= Commands Help =========---
      stat -- Status
       sys -- System
    wless2 -- 2.4G-Wireless
    wless5 -- 5G-Wireless
      mgmt -- Management
      tree -- Tree
      help -- Help
    reboot -- Reboot
    logout -- Logout
araknis@an700outdoor:/# 
**********************************************************
True
 please input command: uci
uci
uci>
**********************************************************
sTrue
 please input command: h
h
/bin/sh: h: not found
uci>
**********************************************************
True
 please input command: sh
sh


BusyBox v1.19.4 (2018-09-05 00:39:25 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

~ # 
**********************************************************
True
 please input command: ifconfig
ifconfig
ath0      Link encap:Ethernet  HWaddr 88:DC:96:5B:58:35  
          inet6 addr: fe80::8adc:96ff:fe5b:5835/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:103 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

ath50     Link encap:Ethernet  HWaddr 88:DC:96:5B:58:36  
          inet6 addr: fe80::8adc:96ff:fe5b:5836/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:146 (146.0 B)

br-lan    Link encap:Ethernet  HWaddr 88:DC:96:5B:58:33  
          inet addr:192.168.2.100  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::8adc:96ff:fe5b:5833/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:289 errors:0 dropped:0 overruns:0 frame:0
          TX packets:193 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:31192 (30.4 KiB)  TX bytes:28908 (28.2 KiB)

eth0      Link encap:Ethernet  HWaddr 88:DC:96:5B:58:33  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:298 errors:0 dropped:8 overruns:0 frame:0
          TX packets:191 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:36378 (35.5 KiB)  TX bytes:28598 (27.9 KiB)
          Interrupt:4 

eth1      Link encap:Ethernet  HWaddr 88:DC:96:5B:58:34  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:5 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1453 (1.4 KiB)  TX bytes:1453 (1.4 KiB)

wifi0     Link encap:Ethernet  HWaddr 88:DC:96:5B:58:35  
          inet6 addr: fe80::8adc:96ff:fe5b:5835/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21819 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1634 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:2699 
          RX bytes:5153199 (4.9 MiB)  TX bytes:321948 (314.4 KiB)
          Interrupt:47 Memory:b8100000-b8120000 

wifi1     Link encap:Ethernet  HWaddr 88:DC:96:5B:58:36  
          inet6 addr: fe80::8adc:96ff:fe5b:5836/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:2699 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:41 

~ # 
**********************************************************
True
 please input command: reboot
reboot
~ # 
**********************************************************
False

Process finished with exit code 0


 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 qqo9110 的頭像
    qqo9110

    阿藏哥的部落格~不應該阿

    qqo9110 發表在 痞客邦 留言(0) 人氣()