Python编程环境下的SSH远程操作
2016-06-09 00:00
344 查看
摘要: 总结一下如何使用Python进行SSH远程基础操作,利用了paramiko和pycrypto两个模块。
###准备
使用
###测试
###使用
####执行远程命令
当执行需要管理员权限的命令时,如何输入密码?
建立一个
####上传文件
####下载文件
上传和下载也可以写一起
###准备
使用
pip工具安装
PyCrypto模块和
paramiko模块;
###测试
python>>import Crypto python>>import paramiko
###使用
####执行远程命令
>>>import paramiko >>>ssh = paramiko.SSHClient() >>>ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) >>>ssh.connect("127.0.0.1", 22, username="name", password="key") >>>stdin, stdout, stderr = ssh.exec_command("uptime") >>> type(stdin) <class 'paramiko.channel.ChannelFile'> >>>stdout.readlines() [u' 21:31:22 up 9:51, 2 users, load average: 0.06, 0.11, 0.14\n']
当执行需要管理员权限的命令时,如何输入密码?
建立一个
session对话。
import paramiko l_password = "yourpassword" l_host = "yourhost" l_user = "yourusername" ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(l_host, username=l_user, password=l_password) transport = ssh.get_transport() session = transport.open_session() session.set_combine_stderr(True) session.get_pty() #for testing purposes we want to force sudo to always to ask for password. because of that we use "-k" key session.exec_command("sudo -k dmesg") stdin = session.makefile('wb', -1) stdout = session.makefile('rb', -1) #you have to check if you really need to send password here stdin.write(l_password +'\n') stdin.flush() for line in stdout.read().splitlines(): print 'host: %s: %s' % (l_host, line) ssh.close()
####上传文件
#!/usr/bin/python import paramiko t = paramiko.Transport(("某IP地址",22)) t.connect(username = "用户名", password = "口令") sftp = paramiko.SFTPClient.from_transport(t) remotepath='/tmp/test.txt' localpath='/tmp/test.txt' sftp.put(localpath,remotepath) t.close()
####下载文件
#!/usr/bin/python import paramiko t = paramiko.Transport(("某IP地址",22)) t.connect(username = "用户名", password = "口令") sftp = paramiko.SFTPClient.from_transport(t) remotepath='/tmp/test.txt' localpath='/tmp/test.txt' sftp.get(remotepath, localpath) t.close()
上传和下载也可以写一起
import paramiko paramiko.util.log_to_file('/tmp/paramiko.log') # Open a transport host = "example.com" port = 22 transport = paramiko.Transport((host, port)) # Auth password = "foo" username = "bar" transport.connect(username = username, password = password) # Go! sftp = paramiko.SFTPClient.from_transport(transport) # Download filepath = '/etc/passwd' localpath = '/home/remotepasswd' sftp.get(filepath, localpath) # Upload filepath = '/home/foo.jpg' localpath = '/home/pony.jpg' sftp.put(localpath, filepath) # Close sftp.close() transport.close()
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- Linux Generating SSH Keys
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例