python远程连接linux_python 连接远程linux服务器 - CSDN
精华内容
参与话题
  • 使用python远程操作linux服务器

    千次阅读 2015-07-23 10:35:52
    摘要 功能:实现同时对多台linux服务器通过ssh执行同一命令。 技术基础: python pexpect,部支持windows。 目录[-] 概述 主脚本 ssh 登陆类库 实例 本文地址 参考资料 概述 ...
    摘要 功能:实现同时对多台linux服务器通过ssh执行同一命令。 技术基础: python pexpect,部支持windows。

    概述

    • 功能:实现同时对多台linux服务器通过ssh执行同一命令。

    • 技术基础: python pexpect,部支持windows。

    • 参数:

      • 固定参数pwd:远程服务器密码,用户名目前写死是root,可自行修改。

      • 可选参数-c CMDS:要执行的命令,比如:"ls -l","cd /home/test && test.py&如果不选择,会从当前目前的cmd.txt读取。

      • 可选参数-s SERVERS:目标服务器,比如192.168.0.1,最后一位数可以用-表示一个区间,分号用于分割不同的ip。如果不选择,会从当前目前的ip.txt读取。

    主脚本

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #!/usr/bin/python# -*- coding: utf-8 -*-# Author:         Rongzhong Xu# CreateDate: 2014-05-06import argparseimport common# deal with argumentsparser = argparse.ArgumentParser()parser.add_argument('pwd', action="store",help=u'password')parser.add_argument('-c', dest='cmds', action="store", help=u'command')parser.add_argument('-s', dest='servers', action="store", help=u'hosts')parser.add_argument('--version', action='version',
        version='%(prog)s 1.1 Rongzhong xu 2014 05 08')options = parser.parse_args()servers = []if options.servers:
        raw_server = options.servers.split(';')
        for server in raw_server:
            if '-' in server:
                server_list = server.split('.')
                base = '.'.join(server_list[:3])
                indices = server_list[-1].split('-')
                start, end = indices            for item in range(int(start),int(end)+1):
                    servers.append('{0}.{1}'.format(base,item))
                     
            else:
                servers.append(server) else:
        for item in open('ip.txt'):
            servers.append(item)   
            cmds = []        if options.cmds:
        cmds.append(options.cmds)else:
        for item in open('cmd.txt'):
            servers.append(item)            
        for host in servers:
        print 
        print("*"*80)
        print("\nConnect to host: {0}".format(host))
        = common.Ssh()
        c.connect(host,'root',options.pwd)
        for item in cmds:
            c.command(item)
        c.close()

    ssh 登陆类库

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    class Ssh(object):
         
        client = None
     
        @classmethod
        def connect(cls,ip,username="root",password="123456", prompt=']#',
            silent=False):
     
            # Ssh to remote server
            ssh_newkey = 'Are you sure you want to continue connecting'
            child = pexpect.spawn('ssh '+ username + '@'+ ip, maxread=5000)
             
            = 1
            # Enter password
            while i != 0:
                = child.expect([prompt, 'assword:*', ssh_newkey, pexpect.TIMEOUT, 
                    'key.*? failed'])
                if not silent:
                    print child.before,child.after,            
                if == 0# find prompt
                    pass      
                elif == 1# Enter password
                    child.send(password +"\r")  
                if == 2# SSH does not have the public key. Just accept it.
                    child.sendline ('yes\r')               
                if == 3# Timeout
                    raise Exception('ERROR TIMEOUT! SSH could not login. ')
                if == 4# new key
                    print child.before,child.after,
                    os.remove(os.path.expanduser('~')+'/.ssh/known_hosts')                     
     
            Ssh.client = child        
     
     
     
        @classmethod
        def command(cls,cmd, prompt=']#', silent=False):
            Ssh.client.buffer = ''
            Ssh.client.send(cmd + "\r")
            #Ssh.client.setwinsize(400,400)
            Ssh.client.expect(prompt)
            if not silent:        
                print Ssh.client.before, Ssh.client.after,
            return Ssh.client.before, Ssh.client.after    
         
        def close(cls,):
            Ssh.client.close()

    实例

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    # ./batch.py -husage: batch.py [-h] [-c CMDS] [-s SERVERS] [--version] pwdpositional arguments:  pwd         password
     
    optional arguments:
      -h, --help  show this help message and exit
      -c CMDS     command
      -s SERVERS  hosts
      --version   show program's version number and exit
     
    # ./batch.py password -s "192.168.0.71-76;123.1.149.26" -c "cat /etc/redhat-release"
     
    ********************************************************************************
     
    Connect to host: 192.168.0.71
    Last login: Thu May  8 17:04:02 2014 from 183.14.8.49
    [root@localhost ~ ]# cat /etc/redhat-release
    CentOS release 5.8 (Final)
    [root@localhost ~ ]#
    ********************************************************************************
     
    Connect to host: 192.168.0.72
    Last login: Thu May  8 17:03:05 2014 from 192.168.0.232
    [root@localhost ~ ]# cat /etc/redhat-release
    CentOS release 5.8 (Final)
    [root@localhost ~ ]#
    ********************************************************************************
     
    Connect to host: 192.168.0.73
    Last login: Thu May  8 17:02:29 2014 from 192.168.0.232
    [root@localhost ~ ]# cat /etc/redhat-release
    CentOS release 5.8 (Final)
    [root@localhost ~ ]#
    ********************************************************************************
     
    Connect to host: 192.168.0.74
    Last login: Thu May  8 17:02:32 2014 from 192.168.0.232
    [root@localhost ~ ]# cat /etc/redhat-release
    CentOS release 5.8 (Final)
    [root@localhost ~ ]#
    ********************************************************************************
     
    Connect to host: 192.168.0.75
    root@192.168.0.75's p assword:  
    Last login: Thu May  8 17:02:56 2014 from 192.168.0.232[root@localhost ~ ]# cat /etc/redhat-releaseCentOS release 6.4 (Final)[root@localhost ~ ]#********************************************************************************
     
    Connect to host: 192.168.0.76
    Last login: Thu May  8 17:03:00 2014 from 192.168.0.232[root@localhost ~ ]# cat /etc/redhat-releaseCentOS release 5.8 (Final)[root@localhost ~ ]#********************************************************************************
     
    Connect to host: 123.1.149.26
    Last login: Thu May  8 16:46:56 2014 from 183.56.157.199[root@LINUX ~ ]# cat /etc/redhat-releaseRed Hat Enterprise Linux Server release 6.5 (Santiago)[root@LINUX ~ ]#[root@AutoTest batch]#

    本文地址

    参考资料

    展开全文
  • PyCharm连接Linux进行远程Python开发

    千次阅读 2018-10-13 11:00:46
    ###Project Interpreter配置远程连接 选择File->Settings配置Project Interpreter 这是一个配置好的远程连接效果 新增一个远程连接 搜索Project Interpreter,必须选择Add Remote选项 IP地址是你...

    Project Interpreter配置远程连接

    选择File->Settings配置Project Interpreter
    这是一个配置好的远程连接效果

    在这里插入图片描述

    新增一个远程连接

    搜索Project Interpreter,必须选择Add Remote选项

    在这里插入图片描述

    IP地址是你Linux服务器分配的IP地址 如127.0.0.1,端口默认 是22,不做特殊处理
    用户名必须是你登录的用户名,这块不要填错,登录密码
    Linux自带Python,目录不用特殊修改

    在这里插入图片描述
    配置完成,会同步几分钟。

    配置项目目录同步到Linux上

    选择Tools->Deployment->Configuration配置同步目录

    在这里插入图片描述

    按照我框选的进行修改
    在这里插入图片描述

    SSH远程连接出现乱码问题

    打开设置修改编码为UTF-8

    在这里插入图片描述

    远程连接linux设置Ctrl+S自动同步代码

    选择Tools->Deployment->Options进行修改设置

    在这里插入图片描述

    打开SSH连接的会话

    选择Tools-> Start SSH session->选择远程会话,连接到远程的服务器会话

    在这里插入图片描述

    pip版本低

    You are using pip version 8.1.1, however version 18.1 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.
    

    必须使用这种方式进行更新

    python3 -m pip install --upgrade pip
    
    展开全文
  • python远程连接linux,并返回命令结果

    千次阅读 2018-10-23 17:39:30
    # -*- coding: utf-8 -*- #Author Mr.xu from ftplib import FTP import datetime import paramiko hostip = '192.168.18.111' user = 'root' passwd = 'root' def run(): ... ssh = paramiko.SSHCli...
    # -*- coding: utf-8 -*-
    #Author Mr.xu
    from ftplib import FTP
    import datetime
    import paramiko
    
    hostip = '192.168.18.111'
    user = 'root'
    passwd = 'root'
    def run():
        try:
            ssh = paramiko.SSHClient()
            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            ssh.connect(hostip, 22, user, passwd)
            stdin ,stdout, stderr= ssh.exec_command('df -h')
            result = stdout.readlines()
            for i in result:
                print(i)
            ssh.close()
        except Exception as e:
            print("\tError %s\n" % e)
    
    run()
    
    
    C:\Users\xgq\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/xgq/PycharmProjects/untitled/提数.py
    Filesystem      Size  Used Avail Use% Mounted on
    
    /dev/sda3        18G  1.5G   17G   9% /
    
    devtmpfs        904M     0  904M   0% /dev
    
    tmpfs           913M     0  913M   0% /dev/shm
    
    tmpfs           913M  8.7M  904M   1% /run
    
    tmpfs           913M     0  913M   0% /sys/fs/cgroup
    
    /dev/sda1       297M  113M  185M  38% /boot
    
    tmpfs           183M     0  183M   0% /run/user/0
    
    /dev/sr0        3.8G  3.8G     0 100% /mnt/dev
    

     

    展开全文
  • python远程ssh连接linux

    千次阅读 2017-11-30 09:56:38
    python远程ssh连接linux 1、安装第三方库paramikopip install paramiko2、创建ssh客户端,并连接ssh = paramiko.SSHClient()# 自动认证 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect('192...

    python远程ssh连接linux

    1、安装第三方库paramiko

    pip install paramiko

    2、创建ssh客户端,并连接

    ssh = paramiko.SSHClient()
    
    # 自动认证
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    
    ssh.connect('192.168.2.54', username = 'test', password='123456')

    3、执行命令

    # 多个命令用';'分隔。
    # 单独'cd'执行切换目录会失效,因为exec_command是会话模式,
    # 执行成功会话结束,会回到初始目录,导致切换目录无效,可以多个命令执行解决。
    stdin, stdout, stderr = ssh.exec_command('ls')
    
    # 打印命令执行情况
    print(stdin.readlines(), stdout.readlines(), stderr.readlines())

    4、关闭连接

    ssh.close()
    展开全文
  • 安装paramiko标准库 pip install pycrypto pip install paramiko pip3 install pexpect ...使用密码连接 linux 并执行.../usr/bin/python3 # -*- coding: UTF-8 -*- import paramiko def sshclient_execm...
  • Python 远程连接Linux服务器(一)

    千次阅读 2020-03-15 21:04:01
    python安装paramiko 远程连接操作linux服务器是很好的选择。 二、依赖包 在安装paramiko前需要先安装三个依赖包。 1、1 在windows中使用cmd命令安装方式 1、安装依赖包 pip3 install ecdsa...
  • 此代码可实现Windows下连接SSH,并操作linux命令行,实现各种操作,包括程序执行输入等。想获得更多操作流程可以留言,我定全力解答。
  • 我们使用Python如何调用Linux的Shell命令: 如在linux系统下,直接import os 模块即可下面介绍下如何在windows下使用python远程调用Sehll1.登录到远程linux服务器需要导入模块import paramiko2.定义函数,登录操作...
  • 为了方便程序的调试,尝试在Windows下的Pycharm远程连接到虚拟机中Centos下的Python环境。(这里我采用的是ssh的远程连接) 1、准备工作: 固定centos的IP,这里我的固定IP为 192.168.254.128 。 centos中安装...
  • python的自动化运维中,要执行系统命令,最方便的还是借助于 python 的 ssh 功能编写日常脚本,简化工作。下面我们说下这个工具。概述功能:实现同时对多台linux服务器通过ssh执行同一命令。技术基础: python ...
  • 在我之前的一篇博文《python基于paramiko模块实现远程连接Linux虚拟机(服务器)并执行指定命令返回输出结果》中,使用paramiko模块实现了远程连接Linux服务器,并执行内存占用情况查询操作的命令,但是在很多时候...
  • 详情见:https://www.cnblogs.com/python-nameless/p/6855804.html
  • 使用Python实现Telnet远程登录

    千次阅读 2017-03-22 22:41:51
    使用Python实现Telnet远程登录  by0x0021 2013-03-25 18:06:07 ...'''Telnet远程登录:Windows客户端连接Linux服务器'''  # 配置选项 Host = '192.168.1.2' # Telnet服务器IP serna
  • 1.首先在Pycharm Tools->Deployment->Configurations打开 新建SFTP ...因为已经连接成功,这时候已经可以读取远程服务器的目录了: 2.选择项目mapping (可以跳过 3. 在Setting->Project:In...
  • pycharm远程连接服务器运行代码加调试

    万次阅读 多人点赞 2018-11-08 09:44:33
    所以解决办法是利用windows中安装的pycharm远程连接linux服务器。 1、设置远程连接配置 依次打开这三个箭头的指向,打开配置面板。 在配置面板中可以为你当前的连接起一个名称,这个名称是用于给你区分你连接...
  • 
 
 
 
 
 
 
 最近碰到的项目大多是多种语言与python混合编程,C、C++、Python等语言的编译环境linu...
  • Windows下的Pycharm远程连接虚拟机中Centos下的Python环境 1、准备工作: 固定centos的IP,这里我的固定IP为 192.168.254.128 centos中安装ssh。(这里我采用的是ssh的远程连接) centos中Python环境已安装2、...
  • Python3 SSH远程连接服务器

    千次阅读 2018-11-08 17:24:26
    首先,我的windows系统上有python2和python3。使用下面命令切换到python3: activate py3 接着使用下面命令下载相关模块: pip install ecdsa pip install Crypto pip install paramiko 连接服务器操作: # -*- ...
  • 参考:https://blog.csdn.net/zhaihaifei/article/details/53691873目标:在windows下使用pycharm写代码,运行时在远程linux服务器环境下运行点击设置的按钮,选择show all点击+号选中SSH Interpreter,填写服务器...
  • 1、确保remote端Python、spark安装正确 2、remote端安装、设置 vi /etc/profile 添加一行:PYTHONPATH=SPARKHOME/python/: SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip source /etc/profile
1 2 3 4 5 ... 20
收藏数 40,886
精华内容 16,354
关键字:

python远程连接linux