簡體   English   中英

SSH 依賴 session - Python Paramiko

[英]SSH Dependant session - Python Paramiko

想知道是否有人做過,還是我要在這里發現熱水。 下面的腳本是我執行命令的基礎(現在在一個設備上,因為我不知道如何傳遞多個),但我需要讓它成為一個依賴的 session。 本質上,我有一個跳轉主機,通過它可以將 SSH 連接到我的終端設備。 SSH 跳轉到主機,然后從它 SSH 到終端設備。 想法?

#Importing modules
import paramiko
import sys
import time

#setting parameters like host IP, username, passwd and number of iterations to gather cmds
HOST = "1.1.1.1"
USER = "admin"
PASS = "passwd"
ITERATION = 3

#A function that logins and execute commands
def fn():
  client1=paramiko.SSHClient()
  #Add missing client key
  client1.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  #connect to switch
  client1.connect(HOST,username=USER,password=PASS)
  print "SSH connection to %s established" %HOST
  #Gather commands and read the output from stdout
  stdin, stdout, stderr = client1.exec_command('show version\n')
  print stdout.read()
  stdin, stdout, stderr = client1.exec_command('show alarms | no-more\n')
  print stdout.read()
  stdin, stdout, stderr = client1.exec_command( 'show processes memory | no-more\n')
  print stdout.read()
  client1.close()
  print "Logged out of device %s" %HOST

#for loop to call above fn x times. Here x is set to 3
for x in xrange(ITERATION):
  fn()
  print "%s Iteration/s completed" %(x+1)
  print "********"
  time.sleep(5) #sleep for 5 seconds

您可以使用direct-tcpip通道創建一個“套接字”,然后您可以將其提供給paramiko.SSHClient

proxy = client1.get_transport().open_channel('direct-tcpip',
                                             dest_addr=(dest_ip, dest_port),
                                             src_addr=('localhost', 0))
client2 = paramiko.SSHClient()
client2.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client2.connect(username='user', password='pass', sock=proxy)

請參閱paramiko.Transport.open_channel文檔

但是,要使其正常工作, client1所連接的服務器必須允許打開這種通道。 大多數都可以,但是在 OpenSSH 中,您可以出於“安全原因”將其禁用(這已一次又一次地顯示為根本不提供額外的安全性,但這是可能的)。

如果您的服務器禁用了此選項,您可以使用任何能夠通過 TCP 與目標服務器通信的跳轉主機進程,例如 Netcat。 有關 that 的代碼,請參閱我的自我回答問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM