【问题标题】:Python Paramiko SSH script that use specific IP source使用特定 IP 源的 Python Paramiko SSH 脚本
【发布时间】:2021-02-18 19:44:44
【问题描述】:

我目前编写的这个脚本运行良好,但有一个限制, 我无法决定哪个源 IP 可以与服务器打开 SSH。 对于具有多个接口的路由器,这将非常有用。 我读到可以使用sockchannel,但是 我不知道如何实现它们,也找不到示例。

谢谢!

from junos import Junos_Context
import paramiko
from datetime import datetime
import jcs

user = Junos_Context['user-context']['login-name']
hostname = Junos_Context['hostname']
now = datetime.now()
day = now.strftime('%Y%m%d')
hour = now.strftime('%H%M%S')

#Sets up the ssh session and logs in as login "simone" with password "simone"
#to host '192.168.2.2' 

host = '192.168.2.2'
login = 'simone'
passw = 'simone'

try:
   ssh = paramiko.SSHClient()
   ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
   ssh.connect(host, username=login, password=passw, look_for_keys=False, allow_agent=False)
  chan = ssh.invoke_shell()
except:
   print "Login to %s failed" % (host,)
   chan = False

if chan:
   sftp = ssh.open_sftp()
   sftp.put('/config/juniper.conf.gz',
  '/simone/backups/%s_%s_%s_%s_juniper.conf.gz' % (user,hostname,day,hour))

   sftp.close()
   ssh.close()

   print "All it's OK %s ! " % (user,)

else:
   print "Sorry, there is no connection to the host %s" % (host,)

【问题讨论】:

    标签: python ssh paramiko juniper


    【解决方案1】:

    使用SSHClient.connectsock 参数来提供绑定到您选择的源地址的自定义套接字。基于Can Python select what network adapter when opening a socket?,应该这样做:

    import socket
    
    s = socks.socket()
    s.bind((local_address, 0))
    s.connect((host, 22))
    ssh.connect(
        host, username=login, password=passw, look_for_keys=False, allow_agent=False, sock=s)
    

    【讨论】:

      【解决方案2】:

      好的,现在可以了! 非常感谢! 我的脚本最终是:

      sok = socket.socket()
      sok.bind((local_address, 0))
      sok.connect((host, 22))
      
      ssh.connect(host, username=login, password=passw, look_for_keys=False, allow_agent=False, sock=sok)
      

      【讨论】:

      • 抱歉,您刚刚复制了我的答案。如果我的回答对你有帮助,请接受我的回答,不要抄袭。
      • 对不起,在我的脚本中购买你的行“s = socks.socksocket()”会引发错误。确实,我只需要改变它,但最终它就像我报告的那样工作。
      • 如果您对错误的 instread 发表评论,那就太好了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 2022-01-08
      • 1970-01-01
      • 2013-12-03
      相关资源
      最近更新 更多