zoukankan      html  css  js  c++  java
  • 远程连接工具

    一 公司的部门介绍

        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

  • 相关阅读:
    C++中的 . 和 >
    JVM内存学习
    JAVA内部类
    2013年3月25日
    Dalvik虚拟机
    多线程访问数据库
    深入学习Android笔记(一)
    结对项目四则运算 “软件”之升级版
    分布式版本控制系统Git的安装与使用
    第一次作业准备
  • 原文地址:https://www.cnblogs.com/fangjie0410/p/8711111.html
Copyright © 2011-2022 走看看