Python通过ssh连接服务器并执行命令

简介: [本文出自天外归云的博客园] 脚本示例如下: # coding:utf-8 import time,paramiko,re,StringIO def exec_shell(command): ''' command:传入的要执行的shell命令 ''' f = StringIO.

[本文出自天外归云的博客园]

脚本示例如下:

# coding:utf-8
import time,paramiko,re,StringIO

def exec_shell(command):
    '''
        command:传入的要执行的shell命令
    '''
    f = StringIO.StringIO()
    header_match = '(\[.+?@.+?\s.+?\]\$)'
    ssh.send(command+'\n')
    while True:
        out = ssh.recv(1024)
        print out,
        f.write(out)
        header_list = re.findall(header_match, out)
        if header_list and out.strip().endswith(header_list[-1]):
            break
    return f

def check_ip(content):
    '''
        从content中取出所有符合xx.120.xx.xx格式的ip地址(xx代表任意多数字)并返回
    '''
    ips = re.findall('\d+\.120\.\d+\.\d+',content)
    return ips

if __name__ == '__main__':
    '''
        host:对应要连接的服务器ip
        port:对应连接服务器的端口
        username:对应访问服务器的用户名
    '''
    host = '10.120.143.70'
    port = 8822
    username = 'bjlantianyou'
    '''
        key_file为secureCRT对应的OpenSSH格式的私钥文件
        可以在secureCRT的'Tools->Convert Private Key to OpenSSH Format...'选择相应的私钥文件转化为OpenSSH格式
        例如:在Windows下保存到'E:\keys\'路径下,保存文件名为'id_rsa'
    '''
    key_file = 'E:\\keys\\id_rsa'
    key = paramiko.RSAKey.from_private_key_file(key_file)
    s = paramiko.SSHClient()
    s.load_system_host_keys()
    s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    s.connect(host, port, username, pkey=key)
    ssh = s.invoke_shell()
    '''
        下面对应在secureCRT上执行命令的过程
    '''
    exec_shell('cd /home/project/api.winyyg.com')
    out = exec_shell('ls')
    ips = check_ip(out.getvalue())
    exec_shell('cat '+ips[0]+'/log/duobao.log')

注意:缓冲区为空的情况下,ssh.recv(1024)会hang住。

可以进一步利用这个方法做一个自动化过滤log的工具或平台。

 
相关文章
|
3月前
|
Java 数据库连接 网络安全
JDBC常用特性-SSH隧道连接
JDBC常用特性-SSH隧道连接
|
5月前
|
安全 网络安全 文件存储
思科设备巡检命令Python脚本大集合
【10月更文挑战第18天】
163 1
思科设备巡检命令Python脚本大集合
|
4天前
|
安全 Linux 网络安全
CentOS 8下SSH连接超时与“无法加载主机密钥”错误的排查与修复
在CentOS 8系统中,宝塔面板提示“出错了,面板运行时发生错误”,导致插件无法正常显示。同时,SSH连接超时,修复面板功能失效。通过VNC连接排查,发现SSH服务安装和配置问题频发,最终通过重装SSH、调整权限并重新生成主机密钥文件解决问题,成功恢复SSH连接。
73 16
|
2月前
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
80 20
|
3月前
|
分布式计算 MaxCompute 对象存储
|
2月前
|
安全 Shell 数据处理
使用Python执行Shell命令并获取结果
在实际应用中,可以根据需要选择适当的参数和方法来执行Shell命令,并处理可能出现的各种情况。无论是系统管理、自动化任务还是数据处理,掌握这些技巧都将极大地提高工作效率。
96 12
|
5月前
|
Python
Python PDB命令介绍
【10月更文挑战第15天】 使用PDB的方式有两种,其中一种是在脚本中添加代码,不觉得这种方式比print好在哪里,所以这种方式此文不表。这里我们只学习PDB的命令行使用方式
88 4
|
5月前
|
Apache 数据中心 Windows
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
|
SQL 关系型数据库 MySQL
Python中连接MySQL数据库并进行增删改查操作
Python中连接MySQL数据库并进行增删改查操作
96 1
|
SQL 关系型数据库 MySQL
使用python连接MySQL数据库,进行增删改查,实现步骤
在Python中连接MySQL数据库并进行增删改查操作,我们需要使用一个库叫做pymysql。
295 4

热门文章

最新文章