python paramiko 验证和发送命令的几种方式

法1:使用 exec.command(),此方法不适合用 sudu su不输入密码的状况

#!/usr/bin/env python

import paramiko

hostname=‘172.16.88.117‘

username=‘liuqian‘

pk_path=‘/home/liuqian/.ssh/id_rsa‘

try:

key=paramiko.RSAKey.from_private_key_file(pk_path)

except paramiko.PasswordRequiredException:

password = getpass.getpass(‘RSA key password:
‘)

key =
paramiko.RSAKey.from_private_key_file(pk_path, password)
  #
需要口令的私钥

ssh=paramiko.SSHClient()

ssh.load_system_host_keys()

ssh.connect(hostname=hostname, username=username,
pkey=key)

stdin, stdout, stderr=ssh.exec_command(‘cd /var/log;ls‘)

# 下面的方法适合使用密码登陆的状况

# ssh.connect(hostname=hostname,
username=username, password=‘123456’)

# stdin, stdout,
stderr=ssh.exec_command(‘sudo su‘)

# stdin.write(‘123456‘)

# stdin.flush()

print stdout.readlines()

print stderr.readlines()

ssh.close()

法2:使用 send()

#!/usr/bin/env python

import paramiko

import time

import socket

ip=‘172.16.88.117‘

username=‘liuqian‘

pk_path=‘/home/liuqian/.ssh/id_rsa‘

cmds=[‘sudo su\n‘, ‘cd /var/log\n‘, ‘ls\n‘]

try:

key=paramiko.RSAKey.from_private_key_file(pk_path)

except paramiko.PasswordRequiredException:

password = getpass.getpass(‘RSA key password:
‘)

key =
paramiko.RSAKey.from_private_key_file(pk_path, password)

s=paramiko.SSHClient()

s.load_system_host_keys()

try:

s.connect(hostname=ip,username=username,pkey=key,timeout=5)

except socket.timeout as e:

sys.exit(1)

ssh=s.invoke_shell()

for cmd in cmds:

time.sleep(1)

ssh.send(cmd)

out = ssh.recv(1024)

print out

ssh.close()

时间: 2024-10-18 12:08:15

python paramiko 验证和发送命令的几种方式的相关文章

[Python] 发送email的几种方式

python发送email还是比较简单的,可以通过登录邮件服务来发送,linux下也可以使用调用sendmail命令来发送,还可以使用本地或者是远程的smtp服务来发送邮件,不管是单个,群发,还是抄送都比较容易实现. 先把几个最简单的发送邮件方式记录下,像html邮件,附件等也是支持的,需要时查文档即可 1 登录邮件服务 #!/usr/bin/env python # -*- coding: utf-8 -*- #python2.7x #send_simple_email_by_account.

python利用unittest进行测试用例执行的几种方式

利用python进行测试时,测试用例的加载方式有2种: 一种是通过unittest.main()来启动所需测试的测试模块:  一种是添加到testsuite集合中再加载所有的被测试对象,而testsuit里存放的就是所需测试的用例,下面分别列出3种方法的具体使用方式:1.通过unittest.main()来执行测试用例的方式: import unittest class UCTestCase(unittest.TestCase):    def setUp(self):        #测试前需

python和C语言混编的几种方式

Python这些年风头一直很盛,占据了很多领域的位置,Web.大数据.人工智能.运维均有它的身影,甚至图形界面做的也很顺,乃至full-stack这个词语刚出来的时候,似乎就是为了描述它. Python虽有GIL的问题导致多线程无法充分利用多核,但后来的multiprocess可以从多进程的角度来利用多核,甚至affinity可以绑定具体的CPU核,这个问题也算得到解决.虽基本为全栈语言,但有的时候为了效率,可能还是会去考虑和C语言混编.混编是计算机里一个不可回避的话题,涉及的东西很多,技术.架

设置socket接收和发送超时的一种方式

Linux环境设置Socket接收和发送超时: 须如下定义:struct timeval timeout = {3,0};  //设置发送超时setsockopt(socket,SOL_SOCKET,SO_SNDTIMEO,(char *)&timeout,sizeof(struct timeval)); //设置接收超时setsockopt(socket,SOL_SOCKET,SO_RCVTIMEO,(char *)&timeout,sizeof(struct timeval)); 另外

jQuery发送ajax请求三种方式

<button>点击发送ajax get请求</button> <button>点击发送ajax post请求</button> <button>点击发送通用的ajax请求</button> <script type="text/javascript" src="jquery-1.8.3.min.js"></script> <script type="te

前端向后台发送请求有几种方式?

1. link标签的href属性 2. script标签的src属性 3. img标签的src属性 4. ajax发送请求 5. 表单提交发送请求 6. a标签的href发送请求 7. iframe的src属性发送请求

java web前端发送请求的4种方式

表单 action, 链接href,js 绑定按钮 ajax绑定标签 <h1>通过表单提交参数</h1> <form action="/day46_v1/ServletDemo01?method=addUser" method="post"> 用户名:<input type="text" name="username"/><button>提交</button&g

前端向后端发送请求的几种方式

1.link标签的href属性 2.script标签的src属性 3.img标签的src属性 4.ajax发送请求 5.form 表单提交 6.a标签的href属性 7.iframe的src属性发送请求 参考:https://www.cnblogs.com/AmorR/p/8030133.html 原文地址:https://www.cnblogs.com/linhuaming/p/9130181.html

Python 2.7获取网站源代码的几种方式

1 #coding:utf-8 2 import urllib2,cookielib 3 4 if __name__ == '__main__': 5 root_url='https://www.baidu.com/' 6 # 第一种 7 print "第一种" 8 response1=urllib2.urlopen(root_url) 9 print response1.getcode() 10 print len(response1.read()) 11 12 #第二种 13 pr