python实现ssh登录send_python: 用EXPECT 实现 ssh 登录(1) | 学步园

#! /usr/bin/env python

# filename : remove_loadbalance_members.py

import pexpect

import sys

import logging

user = sys.argv[1]

host = sys.argv[2]

password = sys.argv[3]

poolName = sys.argv[4]

members = sys.argv[5]

logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s ', level=logging.INFO)

logging.Formatter('%(asctime)s %(levelname)s %(message)s ')

ssh_newkey = 'Are you sure you want to continue connecting (yes/no)?'

child = pexpect.spawn('ssh -l %s %s '%(user, host))

i = child.expect([pexpect.TIMEOUT, ssh_newkey, 'assword: '])

if i == 0:  # Timeout

errorString = 'Wrong Username or Password when logging : '+ host +', '+user+'/'+password

logging.error(errorString)

print "before >> ",child.before

if i == 1:  # SSH does not have the public key. Just accept it.

child.sendline ('yes')

child.expect ('assword: ')

i = child.expect([pexpect.TIMEOUT, 'assword: '])

if i == 0:  # Timeout

errorString = 'Wrong Username or Password when logging : '+ host +', '+user+'/'+password

logging.error(errorString)

child.sendline(password)

n = child.expect(['#', pexpect.TIMEOUT, pexpect.EOF])

if n != 0 :

errorString = 'Wrong Username or Password when logging : '+ host +', '+user+'/'+password

logging.error(errorString)

logging.info('Login '+host+' successfully !')

# 1. Create the LoadBalance

logging.info('Strat remove loadbalance members .')

command = 'b pool '+poolName+' member '+members+' delete '

child.sendline(command)

n = child.expect(['#', pexpect.TIMEOUT, pexpect.EOF])

if n != 0 :

errorString = 'Remove a loadbalance members poolName = '+poolName+' member = '+members+' failed .'

logging.error(errorString)

print "before >> ",child.before

logging.info('Remove a loadbalance members poolName = '+poolName+' member = '+members+'  successfully !')

logging.info('Quit SSH to send command Line : exit')

child.sendline('exit')

#child.expect([pexpect.EOF])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Python中建立两级登录SSH连接,你可以使用paramiko库。paramiko是一个用于SSHv2协议的Python实现,可以在Python中进行SSH连接和文件传输。 以下是一个示例代码,演示了如何建立两级登录SSH连接: ```python import paramiko # 第一级登录信息 host1 = 'first_host' username1 = 'first_username' password1 = 'first_password' # 第二级登录信息 host2 = 'second_host' username2 = 'second_username' password2 = 'second_password' # 创建第一级SSH客户端 client1 = paramiko.SSHClient() client1.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client1.connect(host1, username=username1, password=password1) # 创建第二级SSH客户端 client2 = client1.invoke_shell() client2.send('ssh {}@{}\n'.format(username2, host2)) client2.expect('password:') client2.send('{}\n'.format(password2)) # 进行操作,例如执行命令 client2.send('ls\n') output = '' while not output.endswith('$ '): output += client2.recv(1024).decode('utf-8') # 关闭连接 client2.close() client1.close() ``` 在这个例子中,首先创建第一级SSH客户端,然后使用该客户端建立第二级连接。通过invoke_shell()方法创建一个新的交互式shell通道,并使用send()方法发送SSH命令和输入。使用expect()方法等待密码提示,并使用send()方法发送密码。最后,可以执行操作,例如发送命令并接收输出。最后,关闭两个SSH连接。 请注意,这只是一个示例代码,实际使用时可能需要根据你的环境和需求进行一些修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值