python连接linux服务器_python 连接linux服务器 - CSDN
精华内容
参与话题
  • python3连接Linux服务器并操作

    千次阅读 2019-01-04 11:18:58
    python3连接Linux服务器并操作 import paramiko import logging import sys import os # 加入日志 # 获取logger实例 logger = logging.getLogger("baseSpider") # 指定输出格式 formatter = logging....

    python3连接Linux服务器并操作

    import paramiko
    import logging
    import sys
    import os
    
    # 加入日志
    # 获取logger实例
    logger = logging.getLogger("baseSpider")
    # 指定输出格式
    formatter = logging.Formatter('%(asctime)s\
                  %(levelname)-8s:%(message)s')
    # 文件日志
    file_handler = logging.FileHandler("operation_theServer.log")
    file_handler.setFormatter(formatter)
    # 控制台日志
    console_handler = logging.StreamHandler(sys.stdout)
    console_handler.setFormatter(formatter)
    
    # 为logge添加具体的日志处理器
    logger.addHandler(file_handler)
    logger.addHandler(console_handler)
    
    logger.setLevel(logging.INFO)
    
    class TheServerHelper():
        """初始化函数构造
            其中remote有两个作用,除了字面的服务器路径外
            还作为执行的语句"""
        def __init__(self,serverIP,username,password,remote,local_dir='',ftpType='',port=22):
            self.serverIP = serverIP
            self.username = username
            self.password = password
            self.port = port
            self.ftpType = ftpType
            self.remote = remote
            self.local_dir = local_dir
    
    
        #SSH连接服务器,用于命令执行
        def ssh_connectionServer(self):
            try:
                # 创建SSH对象
                sf = paramiko.SSHClient()
                # 允许连接不在know_hosts文件中的主机
                sf.set_missing_host_key_policy(paramiko.AutoAddPolicy())
                # 连接服务器
                sf.connect(hostname=self.serverIP, port=self.port, username=self.username,
                                              password=self.password)
                stdin, stdout, stderr = sf.exec_command(self.remote)
                result = stdout.read()
                print(result)
            except:
                logger.error("SSHConnection" +self.serverIP+"failed!")
                return False
            return True
    
    
        #FTP连接服务器,用于文件上传和下载
        def ftp_connectionServer(self):
            try:
                # 创建ftp对象
                sf = paramiko.Transport(self.serverIP, self.port)
                sf.connect(username=self.username,password=self.password)
                sftp = paramiko.SFTPClient.from_transport(sf)
            except:
                logger.error("FTPConnection "+self.serverIP+" failed!")
                return False
            """定义参数ftpType:
                        ftpType=1    单个文件从其他服务器向本地下载
                        ftpType=2    单个文件向服务器上传
                        ftpType=3    文件夹下内容下载
                        ftpType=4    文件夹下内容上传"""
            local_path = os.path.dirname(self.local_dir)
            if self.ftpType==1:
                if not os.path.exists(local_path):
                    os.makedirs(local_path)
                    sftp.get(self.remote,self.local_dir)
                    sf.close()
                    return True
            elif self.ftpType==2:
                sftp.put(self.local_dir,self.remote)
                sf.close()
                return True
            else:
                logger.error("服务器路径:"+self.remote+"本地路径:"+self.local_dir)
                return False
    
    展开全文
  • python连接Linux服务器

    2019-06-21 17:47:44
    import paramikoimport os#当前脚本路径CUR_PATH = os.path.dirname(__file__)#服务器ipHost=''Port=22#登录用户名Username=''#登录密码Password=''#登录服务器后执行的命令# Command = ['cd xxxx; ./xxxx.sh']# ...
    import paramiko
    import os

    #当前脚本路径
    CUR_PATH = os.path.dirname(__file__)

    #服务器ip
    Host=''
    Port=22
    #登录用户名
    Username=''
    #登录密码
    Password=''
    #登录服务器后执行的命令
    # Command = ['cd xxxx; ./xxxx.sh']
    # 查看所有端口的使用情况
    # Command = ['mkdir qrh']
    #本地PC路径
    WinPath = CUR_PATH + '\\file_name'
    #服务器上的路径
    LinuxPath = '/path/file_name'

    # def ssh_exec_cmd():
    # '''SSHA远程登录:Windows客户端连接Linux服务器,并输入指令'''
    #
    # #登录服务器
    # ssh = paramiko.SSHClient()
    # ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # ssh.connect(Host, Port, Username, Password)
    # ssh.exec_command('mkdir qrh')
    # print('ok')
    # # err = stderr.readlines()
    # # out = stdout.readlines()
    # # if (err):
    # # print('error:')
    # # print(err)
    # # # print (out)
    # # else:
    # # print(out)
    # ssh.close()
    # ssh_exec_cmd()

    def ssh_exec_cmd():
    '''SSHA远程登录:Windows客户端连接Linux服务器,并输入指令'''

    #登录服务器
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(Host, Port, Username, Password)
    # ssh.exec_command('mkdir qrh')
    stdin, stdout, stderr = ssh.exec_command('mkdir www')
    err = stderr.readlines()
    out = stdout.readlines()
    if (err):
    print('error:')
    print(err)
    # print (out)
    else:
    print('out:')
    print(out)
    ssh.close()


    ssh_exec_cmd()


    转载于:https://www.cnblogs.com/hapyygril/p/9293976.html

    展开全文
  • Python 远程连接Linux服务器(一)

    千次阅读 2020-03-15 21:04:01
    python安装paramiko 远程连接操作linux服务器是很好的选择。 二、依赖包 在安装paramiko前需要先安装三个依赖包。 1、1 在windows中使用cmd命令安装方式 1、安装依赖包 pip3 install ecdsa...

    Python  远程连接服务器

    一、绪论

    在python项目中需要远程操作linux服务器,在服务器上进行文件的拷贝以及linux命令操作。给python安装paramiko 远程连接操作linux服务器是很好的选择。

    二、依赖包

    在安装paramiko前需要先安装三个依赖包。

    1、1 在windows中使用cmd命令安装方式

    1、安装依赖包
    pip3 install ecdsa
    pip3 install Crypto
    pip3 install Twisted
    2、安装paramiko
    pip3 install paramiko
    

    1、2 使用python工具安装

    1、在pyCharm工具依次点击:File---setting---Project

    2、在Project中找到自己的项目,点击Interpreter

    搜索插件,安装

     

    1.3 paramiko 安装完成后,即可编写脚本远程连接。

    三、远程ssh连接服务器方式一

    第一种方式:

    这种方式比较简单,没有进行封装。单纯的实现了远程连接linux服务器。下面还有一种方式,是在这个方式的基础上将每个主要步骤做了封装,方便业务调用。

    import paramiko
    class ConnectShell:
    
        def remotConnect(self):
            # 服务器相关信息,下面输入你个人的用户名、密码、ip等信息
            ip = "192.168.1.110"
            port = 22
            user = "root"
            password = "123456"
    
            # 创建SSHClient 实例对象
            ssh = paramiko.SSHClient()
            # 调用方法,表示没有存储远程机器的公钥,允许访问
            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            # 连接远程机器,地址,端口,用户名密码
            ssh.connect(ip, port, user, password, timeout=10)
            # 输入linux命令
            ls = "ls"
            stdin, stdout, stderr = ssh.exec_command(ls)
            # 输出命令执行结果
            result = stdout.read()
            print(result)
            # 关闭连接
            ssh.close()
    

    四、远程ssh连接服务器方式二

    这个方式是在上面的第一种方式上进行了封装。

    4.1定义一个linux类实现连接远程连接linux服务器 

    import paramiko
    import re
    from time import sleep
    # 定义一个类,表示一台远端linux主机
    class Linux(object):
        # 通过IP, 用户名,密码,超时时间初始化一个远程Linux主机
        def __init__(self, ip, username, password, timeout=30):
            self.ip = ip
            self.username = username
            self.password = password
            self.timeout = timeout
            # transport和chanel
            self.t = ''
            self.chan = ''
            # 链接失败的重试次数
            self.try_times = 3
    
        # 调用该方法连接远程主机
        def connect(self):
            while True:
                # 连接过程中可能会抛出异常,比如网络不通、链接超时
                try:
                    self.t = paramiko.Transport(sock=(self.ip, 22))
                    self.t.connect(username=self.username, password=self.password)
                    self.chan = self.t.open_session()
                    self.chan.settimeout(self.timeout)
                    self.chan.get_pty()
                    self.chan.invoke_shell()
                    # 如果没有抛出异常说明连接成功,直接返回
                    print(u'连接%s成功' % self.ip)
                    # 接收到的网络数据解码为str
                    print(self.chan.recv(65535).decode('utf-8'))
                    return
                # 这里不对可能的异常如socket.error, socket.timeout细化,直接一网打尽
                except Exception:
                    if self.try_times != 0:
                        print(u'连接%s失败,进行重试' % self.ip)
                        self.try_times -= 1
                    else:
                        print(u'重试3次失败,结束程序')
                        exit(1)
    
        # 断开连接
        def close(self):
            self.chan.close()
    
            self.t.close()
    
        # 发送要执行的命令
        def send(self, cmd,pattern):
            cmd += '\r'
            # 通过命令执行提示符来判断命令是否执行完成
            patt = pattern
            p = re.compile(patt)
            result = ''
            # 发送要执行的命令
            self.chan.send(cmd)
            # 回显很长的命令可能执行较久,通过循环分批次取回回显
            while True:
                sleep(0.5)
                ret = self.chan.recv(65535)
                ret = ret.decode('utf-8')
                result += ret
                if p.search(ret):
                    print(result)
                    return result
    
    #测试linux类代码
    # if __name__ == '__main__':
    #      host = Linux('192.168.1.106', 'long', 'long')
    #      host.connect()
    #      host.send('su root',r'.*(]#|密码).*')
    #      host.send('123456')
    #      host.send('pwd')
    #      host.close()

    4.2定义一个App类调用linux类根据业务需求传入不同的参数实现业务不同的功能。(此时linux类作为一个工具类)

    from common.connectionLinux.Linux import Linux
    
    class App(object):
        #主节点服务器IP地址
        MASTIP = '192.168.1.106'
        #多个服务器IP地址
        IPlist = ['192.168.1.107','192.168.1.108','192.168.1.110']
    
        def __init__(self):
            self.host = Linux(self.MASTIP, 'long', 'long')
        #非root账户登录
        def connect(self):
            self.host.connect()
    
        #切换root账户登录
        def sendCmdRoot(self):
            pattern1 = r'.*(密码).*'
            pattern2 = r'.*(]#).*'
            cmd1 = 'su root'
            cmd2 = '123456'
            self.host.send(cmd1,pattern1)
            self.host.send(cmd2,pattern2)
    
        #子节点文件拷贝到主节点
        def copyCmd(self):
            for ip in self.IPlist:
                print(ip)
    
            pattern = r'.*(]#).*'
            cmd = 'scp root@'+ip+':/home/long/test.txt /home/long'
            print(cmd)
            self.host.send(cmd,pattern)
    
    
    
    
    
    
    
    if __name__ == '__main__':
        #连接linux
        app = App()
        # app.connect()
        # app.sendCmdRoot()
        app.copyCmd()
    
    
    

     

    展开全文
  • python连接linux

    2019-06-13 11:13:02
    使用python paramiko库,直接用pip安装pip install paramiko 其简单用法如下代码: import paramiko class SSH(object): def __init__(self, host, port, user, passwd): self.host = host self.port =...

    使用python paramiko库,直接用pip安装pip install paramiko

    其简单用法如下代码:

    import paramiko
    
    class SSH(object):
    	def __init__(self, host, port, user, passwd):
    		self.host = host
    		self.port = port
    		self.user = user
    		self.passwd = passwd
    		self.length = 0
    		self.ssh = paramiko.SSHClient()
    		self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    		try:
    			self.ssh.connect(self.host,self.port,self.user,self.passwd)
    		except Exception as e:
    			print ('Exception:', e)
    	def Execmd(self,exe_cmd):
    		stdin, stdout, stderr = self.ssh.exec_command(exe_cmd, get_pty = True)
    		return stdout.read()
    if __name__ == '__main__':
    	ssh = SSH(yourip, '22', youruser, yourpasswd)
    	ss = ssh.Execmd('cd ~;pwd')
    	print(ss)
    

    其结果就会打印出你linux服务器home的目录即:b’/home\r\n’

    展开全文
  • 一、使用python远程连接,操作服务器 paramiko,是python中的第三方包,基于ssh服务,可以使用python实现ssh功能。 使用前先安装 在windows环境下的cmd中执行命令: pip install paramiko 入门版 重点体会使用过程...
  • 此代码可实现Windows下连接SSH,并操作linux命令行,实现各种操作,包括程序执行输入等。想获得更多操作流程可以留言,我定全力解答。
  • 我们使用Python如何调用Linux的Shell命令: 如在linux系统下,直接import os...登录到远程linux服务器需要导入模块import paramiko2.定义函数,登录操作系统def loginLinux(sys_ip,username,password,cmds): try: ...
  • python的自动化运维中,要执行系统命令,最方便的还是借助于 ...概述功能:实现同时对多台linux服务器通过ssh执行同一命令。技术基础: python pexpect paramiko等模块,部支持windows。参数:固定参数pwd:远程...
  • Linux下后台执行python程序

    千次阅读 2018-06-30 17:59:14
    用Xshell连接服务器,打算在服务器上跑一个耗时间很长的代码,但是一旦会话连接断开,代码也会结束执行 解决方案 使用nohup命令挂起服务 例如,我要执行我的test.py文件 可以这样写 其中: -u是为了禁止...
  • 在我之前的一篇博文《python基于paramiko模块实现远程连接Linux虚拟机(服务器)并执行指定命令返回输出结果》中,使用paramiko模块实现了远程连接Linux服务器,并执行内存占用情况查询操作的命令,但是在很多时候...
  • 详情见:https://www.cnblogs.com/python-nameless/p/6855804.html
  • pycharm远程连接服务器运行代码加调试

    万次阅读 多人点赞 2018-11-08 09:44:33
    所以解决办法是利用windows中安装的pycharm远程连接linux服务器。 1、设置远程连接配置 依次打开这三个箭头的指向,打开配置面板。 在配置面板中可以为你当前的连接起一个名称,这个名称是用于给你区分你连接...
  • linux下用python搭建web服务器

    千次阅读 2018-05-11 21:16:10
    web服务器是指在物理服务器上搭建的网络连接服务器,时刻等待客户端的请求,并作出响应。 客户端与服务器的通信,是以HTTP协议进行的,客户端可以是任意支持HTTP协议的软件 客户端在向服务器发送HTTP请求前,先建立...
  • Linux下修改python连接

    千次阅读 2020-01-02 15:04:21
    1.linux的软连接存放位置 cd /usr/bin 2.查看现有python的软连接指向的版本 ls -al python 3.删除旧的软连接 rm python 4.建立新的软连接 ln -s python3.5 python 5.查看软连接版本 python -V 原文:...
  • Linux下开机启动python脚本详解

    千次阅读 2018-09-12 14:07:13
    最近在服务器上部署一些脚本,需要让其随服务器开机启动,于是研究了一下,begin . . . 解决方法: 1. 先准备好需要开机启动的脚本 /root/test/qin.py 2. 一定root权限编辑文件/etc/rc.local,在exit 0之前编辑...
  • Linux连接redis数据库

    万次阅读 2017-12-18 08:47:26
    redis至少开两个窗口,一个服务器,一个客户端
  • python 读取Linux服务器上的文件

    千次阅读 2017-12-12 16:16:59
    使用Python语句,读取Linux远端服务器上的文件打印到控制台的代码实现: 下载包:paramiko import paramiko #服务器信息,主机名(IP地址)、端口号、用户名及密码 hostname = "" port = 22 username = ...
  • Python3 SSH远程连接服务器

    千次阅读 2018-11-08 17:24:26
    下载paramiko 首先,我的windows系统上有python2和python3。使用下面命令切换到python3: activate py3 接着使用下面命令下载相关模块: ...连接服务器操作: # -*- coding: utf-8 -*- import paramiko #...
  • 1.首先在Pycharm Tools->Deployment->Configurations打开 新建SFTP ...因为已经连接成功,这时候已经可以读取远程服务器的目录了: 2.选择项目mapping (可以跳过 3. 在Setting->Project:In...
  • /usr/bin/env python3 # -*- coding: utf-8 -*- ''' 因为含有pxssh模块,该程序只能在 linux 环境中运行 ''' import optparse from pexpect import pxssh class Client: def __init__(self, host, user, ...
1 2 3 4 5 ... 20
收藏数 86,935
精华内容 34,774
关键字:

python连接linux服务器