python获取远程服务器连接并对进程操作

1.获取远程服务器连接

from fabric2 import Connection


def get_server_conn(remote_ip, gateway_ip, gateway_port, password):
	"""
    获取服务器远程连接
    :param remote_ip: 远程服务器内网ip
    :param gateway_ip: 网关ip(跳板机ip)
    :param gateway_port: 网关端口(跳板机端口)
    :param password: 远程服务器root账号密码
    :return: 返回服务器连接对象
    """
   
    print('*********remote_ip=%s, gateway_ip=%s, gateway_port=%s, password=%s' % (remote_ip, gateway_ip, gateway_port, password))
    if (password is None) or (password == ''):
        pwd = '123456'  # 没有设置密码默认使用123456尝试
    else:
        pwd = password
    if (gateway_ip is None) or (gateway_ip == ''):
    	# 没有跳板机ip和端口则直接远程到remote_ip
        conn = Connection(remote_ip, port=22, user='root', connect_timeout=connect_timeout_second, connect_kwargs={'password': pwd})
    else:
        if (gateway_port is None) or (gateway_port == ''):
        	# 如果没有跳板机端口,则默认使用22端口
            gateway_port = 22
        # 先远程连接到跳板机,再远程到目标服务器内网ip
        gateway_conn = Connection(gateway_ip, port=gateway_port, user='root', connect_timeout=connect_timeout_second, connect_kwargs={'password': pwd})
        conn = Connection(remote_ip, port=22, user='root', gateway=gateway_conn, connect_timeout=connect_timeout_second, connect_kwargs={'password': pwd})
    return conn

2.对远程目标服务器进行操作

以查找某一应用的进程并杀掉进程为例,执行conn.run(command)操作,command为linux操作指令

import invoke.exceptions


def kill_app_pid(conn, app_name):
    """获取应用进程id并kill掉该进程"""
    try:
    	find_app_pid = 'ps x | grep {} | grep -v grep'.format(app_name)
        result = conn.run(find_app_pid )  # 查看运行中的进程
    except invoke.exceptions.UnexpectedExit:
        pass
    else:
        pid_str = result.stdout.split(' ?')[0]
        kill_pid = 'kill -9 {}'.format(pid_str)
        conn.run(kill_pid)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值