远程连接工具

一 公司的部门介绍

    2. IT管理工具
       行业现状:
            技术部
                运维部门
                    运维:
                        - 系统、业务
                        - 网络
                        - 桌面
                    DBA:
                        - 数据库管理
                    
                    运维开发:
                        - 为运维开发工具
                        - 为开发自动化工具
                前端
                
                测试 

                咨询
                
                口碑
                
                二手车
                
                车商城
        
        自动化招聘:
View Code

二 paramiko模块实现ssh链接

 fabric模块详细信息:http://python.jobbole.com/87241/

  官网:http://www.fabfile.org/

  实例借鉴:https://www.cnblogs.com/aslongas/p/5961144.html

 ansible模块的详细信息:https://www.cnblogs.com/leomei91/p/7255353.html

  使用:https://blog.csdn.net/u013636377/article/details/50732160

 paramiko模块官网:http://docs.paramiko.org/en/2.4/

  使用和介绍:https://blog.csdn.net/aeolus_pu/article/details/50965031

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
paramiko,用于远程连接服务器操作。
安装:
    pip3 install paramiko
"""

import paramiko


def user_pwd_ssh(host,user,pwd,cmd):
    """
    使用用户名和密码远程执行命令
    :param cmd:
    :return:
    """
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    ssh.connect(hostname=host, port=22, username=user, password=pwd)
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command(cmd)
    # 获取命令结果
    result = stdout.read()
    # 关闭连接
    ssh.close()

    return result


def rsa_ssh(cmd):
    """
    使用秘钥远程执行命令
    :param cmd:
    :return:
    """
    # private_key = paramiko.RSAKey.from_private_key_file('/Users/wupeiqi/.ssh/id_rsa')
    private_key = paramiko.RSAKey.from_private_key_file(r'C:UsersAdministrator.sshid_rsa')
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    ssh.connect(hostname='123.206.9.225', port=22, username='root', pkey=private_key)
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command(cmd)
    # 获取命令结果
    result = stdout.read()
    # 关闭连接
    ssh.close()

    return result


def user_pwd_upload_download():
    """
    基于用户名密码实现远程上传和下载文件
    :return:
    """
    transport = paramiko.Transport(('123.206.9.225', 22,))
    transport.connect(username='root', password='fangshaoweigege')

    sftp = paramiko.SFTPClient.from_transport(transport)

    # 上传文件:
    #        参数一:本地文件
    #        参数二:目标服务器路径
    # sftp.put('xxxx.py', '/tmp/fangjinghong.py')

    # 下载文件:
    #        参数一:服务器文件路径
    #        参数二:本地路径
    sftp.get('/tmp/gpu_init.log', 'x.log')

    # 面试题:找到某个目录中所有的文件并上传。

    transport.close()


def ssh_upload_download():
    """
    基于ssh实现文件上传和下载
    :return:
    """
    private_key = paramiko.RSAKey.from_private_key_file('/Users/wupeiqi/.ssh/id_rsa')

    transport = paramiko.Transport(('47.98.134.86', 22,))
    transport.connect(username='root', pkey=private_key)
    sftp = paramiko.SFTPClient.from_transport(transport)
    # 上传文件:
    #        参数一:本地文件
    #        参数二:目标服务器路径
    sftp.put('1.git.py', '/tmp/xx.py')

    # 下载文件:
    #        参数一:服务器文件路径
    #        参数二:本地路径
    # sftp.get('/tmp/test.py', '2.py')
    transport.close()


if __name__ == '__main__':
    # result = user_pwd_ssh('123.206.9.225','root','fangshaoweigege','ifconfig')
    # print(result)

    # result = rsa_ssh('ifconfig')
    # print(result)

    user_pwd_upload_download()
View Code

  用Python在本地执行命令subprocess

  v = subprocess.check_output('git clone https://github.com/WuPeiqi/Tyrion.git',shell=True)
  print(v)
  subprocess.Popen(...)

import subprocess
"""
result = subprocess.call("dir", shell=True)
print(result,1111)
"""
# import subprocess
# obj = subprocess.Popen("git clone https://github.com/WuPeiqi/Tyrion.git", shell=True, cwd=r'D:wupeiqis7')
# print(obj)

v = subprocess.check_output('git clone https://github.com/WuPeiqi/Tyrion.git',shell=True)
print(1111,v,1111)
View Code

三 saltstack模块

 只在一台机器上安装:

  master:一台

  slave:其他所有

 安装过程:

  master:

                    1. 安装salt-master
                        yum install salt-master
                    2. 修改配置文件:/etc/salt/master
                        interface: 0.0.0.0    # 表示Master的IP 
                    3. 启动
                        /etc/init.d/salt-master start 
                        或
                        service salt-master start
                        或
                        systemctl start salt-master.service
View Code

  slave:

                    1. 安装salt-minion
                        yum install salt-minion

                    2. 修改配置文件 /etc/salt/minion
                        master: 10.211.55.4           # master的地址
                        或
                        master:
                            - 10.211.55.4
                            - 10.211.55.5
                        random_master: True

                        id: c2.salt.com                    # 客户端在salt-master中显示的唯一ID
                    3. 启动
                        service salt-minion start
View Code

 授权:

"""
salt-key -L                    # 查看已授权和未授权的slave
salt-key -a  salve_id      # 接受指定id的salve
salt-key -r  salve_id      # 拒绝指定id的salve
salt-key -d  salve_id      # 删除指定id的salve
"""
View Code

 在master服务器上对salve进行远程操作:

  基于shell命令:

salt 'c2.salt.com' cmd.run  'ifconfig'
View Code

  基于Salt的API:

import salt.client
local = salt.client.LocalClient()
result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])
View Code

 常用命令:

  编辑文件的路径:/etc/salt/minion  vim进入编辑

  

  systemctl start salt-master.service  :  启动服务的时候总是出现这个提示,解决的办法就是写上/bin/systemctl start httpd.service这条命令

  salt-key  -L :  查看已授权和未授权的slave

  salt-key -a 指定的那个id执行:接受指定id的slave

  

  salt-key -A:  接收所有指定id的slave

  

  salt 'cc.com' cmd.run 'ifconfig'  :  指定哪个指定id的执行这条命令

  

  salt '*' cmd.run 'ifconfig'  :  所有制定过的id都执行这条命令

  

   salt 'c*.com' cmd.run 'ifconfig'  :  所有以什么开头的id名执行这条命令

 详细命令信息:https://blog.csdn.net/wjacketcn/article/details/50853604

 详细信息:http://www.cnblogs.com/wupeiqi/articles/6415436.html

原文地址:https://www.cnblogs.com/fangjie0410/p/8711111.html