精华内容
下载资源
问答
  • Python远程执行shell命令

    千次阅读 2020-06-17 20:58:02
    python远程执行shell上的命令。

    连接ssh,执行shell命令

    import paramiko
    
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    ssh.connect(hostname='********', port=22, username='root', password='1')
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('/usr/bin/Rscript /tandelindata/code.R')
    # 获取命令结果
    result = stdout.read()
    print(result )
    # 关闭连接
    ssh.close()
    
    展开全文
  • 修改代码RemoteShell.app部分,执行对应的Shell命令。 #!/usr/bin/env python3 # _*_ coding:utf8 _*_ from paramiko import SSHClient,AutoAddPolicy #pip3 install paramiko -i ...
    修改代码RemoteShell.app部分,执行对应的Shell命令。
    #!/usr/bin/env python3
    # _*_ coding:utf8 _*_
    from paramiko import SSHClient,AutoAddPolicy  #pip3 install paramiko -i https://pypi.tuna.tsinghua.edu.cn/simple/
    
    class RemoteShell():
        def __init__(self,host,port,user,pswd):
            self.host,self.port = host,port
            self.user,self.pswd = user,pswd
            self.ssh_client = None
    
        #执行shell
        def remote_shell(self,shell,title=""):   #命令,标题
            stdin, stdout, stderr = self.ssh_client.exec_command(shell)
            for i in stdout.readlines():
                print("%s\t%s\t%s"%(self.host,title,str(i).strip()))
    
        def app(self):
            self.remote_shell("uptime", '运行时长 ')
            self.remote_shell('cat /etc/redhat-release ',"系统版本")
            self.remote_shell("crontab -l","定时任务")
    
        def run(self):
            try:
                #创建连接
                self.ssh_client = SSHClient()
                key = AutoAddPolicy()
                self.ssh_client.set_missing_host_key_policy(key)
                self.ssh_client.connect(self.host, self.port, self.user, self.pswd, timeout=3)
                
                self.app()
                
                self.ssh_client.close()
            except Exception as e:
                print(self.host,str(e))
    
    
    RemoteShell("192.168.1.105",22,"root","123456").run()
    

     

    
    class RemoteShell():
        def __init__(self, host, port, user, pswd,shells,error_break=True):
            self.host, self.port = host, port
            self.user, self.pswd = user, pswd
            self.shells = shells
            self.error_break = error_break
            self.ssh_client = None
            self.msgs = []
    
        def execute(self, shell):
            stdin, stdout, stderr = self.ssh_client.exec_command(shell)
            return {"shell":shell,"result":list(stdout),"error":" ; ".join(list(stderr))}
    
        def run(self):
            self.ssh_client = SSHClient()
            key = AutoAddPolicy()
            self.ssh_client.set_missing_host_key_policy(key)
            self.ssh_client.connect(self.host, int(self.port), self.user, self.pswd, timeout=3)
            for shell in self.shells:
                msg = self.execute(shell)
                self.msgs.append(msg)
                if self.error_break and msg.get("error",None):
                    break
            self.ssh_client.close()
            return self.msgs

     

     

    展开全文
  • java通过thrift调用python远程执行shell

    千次阅读 2015-10-16 19:32:01
    2、执行 thrift -r --gen py tutorial.thrift thrift -r --gen java tutorial.thrift 形成 drwxrwxr-x 4 hadoop hadoop 4096 Oct 9 15:42 gen-java drwxrwxr-x 4 hadoop hadoop 4096 Oct 9 19:21 gen...

    1、首先是在centos安装thrift

    2、thrift不懂得可以参考http://blog.csdn.net/weiliu0626/article/details/8237983这篇文章

    3、首先编写middle.thrift文件

    namespace java com.vrv.bigdata.deploy
    struct ReturnMessage {
      1: list<string> shellLog,
      2: string flag,
      3: map<string,string> configxml
    }
    struct FtpServer {
      1: string ip,
      2: string port,
      3: string username,
      4: string password
    }
    service LongDeploy {
        ReturnMessage executeInstall(1:FtpServer ftpserver, 2:string installversion, 3:string filename, 4:string configxml)
    ReturnMessage executeUpdate(1:FtpServer ftpserver, 2:string installversion, 3:string filename, 4:string configxml)
    ReturnMessage executeStart()
    ReturnMessage executeStop()
    ReturnMessage executeStatus()
    ReturnMessage executeUnistall()
    ReturnMessage updateShell(1:FtpServer ftpserver, 2:string installversion, 3:string filename)
    }

    4、然后

    thrift -r --gen py tutorial.thrift

    thrift -r --gen java tutorial.thrift

    生成

    drwxrwxr-x 4 hadoop hadoop 4096 Oct  9 15:42 gen-java
    drwxrwxr-x 4 hadoop hadoop 4096 Oct  9 19:21 gen-py

    这两个文件把java放入java系统中,修改python服务器

    所需东西传到百度云盘中了

    5、分别修改python服务端和java客户端,就可以了


    --------------------------------------------------------------------------------------

    thrift带返回对象例子


    1、首先还是得有一个thrift文件接口

    这是 tutorial.thrift 

    /*
     * Licensed to the Apache Software Foundation (ASF) under one
     * or more contributor license agreements. See the NOTICE file
     * distributed with this work for additional information
     * regarding copyright ownership. The ASF licenses this file
     * to you under the Apache License, Version 2.0 (the
     * "License"); you may not use this file except in compliance
     * with the License. You may obtain a copy of the License at
     *
     *   http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing,
     * software distributed under the License is distributed on an
     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     * KIND, either express or implied. See the License for the
     * specific language governing permissions and limitations
     * under the License.
     */
    
    # Thrift Tutorial
    # Mark Slee (mcslee@facebook.com)
    #
    # This file aims to teach you how to use Thrift, in a .thrift file. Neato. The
    # first thing to notice is that .thrift files support standard shell comments.
    # This lets you make your thrift file executable and include your Thrift build
    # step on the top line. And you can place comments like this anywhere you like.
    #
    # Before running this file, you will need to have installed the thrift compiler
    # into /usr/local/bin.
    
    /**
     * The first thing to know about are types. The available types in Thrift are:
     *
     *  bool        Boolean, one byte
     *  byte        Signed byte
     *  i16         Signed 16-bit integer
     *  i32         Signed 32-bit integer
     *  i64         Signed 64-bit integer
     *  double      64-bit floating point value
     *  string      String
     *  binary      Blob (byte array)
     *  map<t1,t2>  Map from one type to another
     *  list<t1>    Ordered list of one type
     *  set<t1>     Set of unique elements of one type
     *
     * Did you also notice that Thrift supports C style comments?
     */
    
    // Just in case you were wondering... yes. We support simple C comments too.
    
    /**
     * Thrift files can reference other Thrift files to include common struct
     * and service definitions. These are found using the current path, or by
     * searching relative to any paths specified with the -I compiler flag.
     *
     * Included objects are accessed using the name of the .thrift file as a
     * prefix. i.e. shared.SharedObject
     */
    include "shared.thrift"
    
    /**
     * Thrift files can namespace, package, or prefix their output in various
     * target languages.
     */
    namespace cpp tutorial
    namespace d tutorial
    namespace dart tutorial
    namespace java tutorial
    namespace php tutorial
    namespace perl tutorial
    namespace haxe tutorial
    
    /**
     * Thrift lets you do typedefs to get pretty names for your types. Standard
     * C style here.
     */
    typedef i32 MyInteger
    
    /**
     * Thrift also lets you define constants for use across languages. Complex
     * types and structs are specified using JSON notation.
     */
    const i32 INT32CONSTANT = 9853
    const map<string,string> MAPCONSTANT = {'hello':'world', 'goodnight':'moon'}
    
    /**
     * You can define enums, which are just 32 bit integers. Values are optional
     * and start at 1 if not supplied, C style again.
     */
    enum Operation {
      ADD = 1,
      SUBTRACT = 2,
      MULTIPLY = 3,
      DIVIDE = 4
    }
    
    /**
     * Structs are the basic complex data structures. They are comprised of fields
     * which each have an integer identifier, a type, a symbolic name, and an
     * optional default value.
     *
     * Fields can be declared "optional", which ensures they will not be included
     * in the serialized output if they aren't set.  Note that this requires some
     * manual management in some languages.
     */
    struct Work {
      1: i32 num1 = 0,
      2: i32 num2,
      3: Operation op,
      4: optional string comment,
    }
    
    /**
     * Structs can also be exceptions, if they are nasty.
     */
    exception InvalidOperation {
      1: i32 whatOp,
      2: string why
    }
    
    /**
     * Ahh, now onto the cool part, defining a service. Services just need a name
     * and can optionally inherit from another service using the extends keyword.
     */
    service Calculator extends shared.SharedService {
    
      /**
       * A method definition looks like C code. It has a return type, arguments,
       * and optionally a list of exceptions that it may throw. Note that argument
       * lists and exception lists are specified using the exact same syntax as
       * field lists in struct or exception definitions.
       */
    
       void ping(),
    
       i32 add(1:i32 num1, 2:i32 num2),
    
       i32 calculate(1:i32 logid, 2:Work w) throws (1:InvalidOperation ouch),
    
       /**
        * This method has a oneway modifier. That means the client only makes
        * a request and does not listen for any response at all. Oneway methods
        * must be void.
        */
       oneway void zip()
    
    }
    
    /**
     * That just about covers the basics. Take a look in the test/ folder for more
     * detailed examples. After you run this file, your generated code shows up
     * in folders with names gen-<language>. The generated code isn't too scary
     * to look at. It even has pretty indentation.
     */

    这是shared.thrift 

    /*
     * Licensed to the Apache Software Foundation (ASF) under one
     * or more contributor license agreements. See the NOTICE file
     * distributed with this work for additional information
     * regarding copyright ownership. The ASF licenses this file
     * to you under the Apache License, Version 2.0 (the
     * "License"); you may not use this file except in compliance
     * with the License. You may obtain a copy of the License at
     *
     *   http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing,
     * software distributed under the License is distributed on an
     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     * KIND, either express or implied. See the License for the
     * specific language governing permissions and limitations
     * under the License.
     */
    
    /**
     * This Thrift file can be included by other Thrift files that want to share
     * these definitions.
     */
    
    namespace cpp shared
    namespace d share // "shared" would collide with the eponymous D keyword.
    namespace dart shared
    namespace java shared
    namespace perl shared
    namespace php shared
    namespace haxe shared
    
    struct SharedStruct {
      1: i32 key
      2: string value
    }
    
    service SharedService {
      SharedStruct getStruct(1: i32 key)
    }

    2、执行

    thrift -r --gen py tutorial.thrift

    thrift -r --gen java tutorial.thrift

    形成

    drwxrwxr-x 4 hadoop hadoop 4096 Oct  9 15:42 gen-java
    drwxrwxr-x 4 hadoop hadoop 4096 Oct  9 19:21 gen-py

    文档

    3、修改服务端和客户端

    具体代码在百度云盘李新凯thriftstruct中







    展开全文
  • Python ssh 远程执行shell命令

    万次阅读 2017-12-17 18:39:35
    python 的 paramiko 库远程执行 shell 命令

    #工具
    python
    paramiko

    #远程执行命令

    import paramiko
    
    ssh = paramiko.SSHClient()
    key = paramiko.AutoAddPolicy()
    ssh.set_missing_host_key_policy(key)
    ssh.connect('127.0.0.1', 22, 'user', 'passwd' ,timeout=5)
    stdin, stdout, stderr = ssh.exec_command('ls -l')
    
    for i in stdout.readlines():
    	print(i)
    
    展开全文
  • stdin, stdout, stderr = self.client.exec_command(command=shell, bufsize=1, timeout=timeout) while True: line = stdout.readline() if not line: break print(line) print(stderr.read()) code = ...
  • 如题,python远程调用shell脚本,调起entegor进程以后,无法执行日志中输出中文的程序
  • python执行shell脚本1.远程:paramiko2.本地:subprocess一、paramiko模块首先要安装pip install cryptography==2.4.2,不然会报错#coding:utf-8#python批量执行远程shell脚本import paramikoclass MySQLCon:def __...
  • python3基于paramiko模块登录CentOS服务器执行shell命令,实现服务器文件的上传和下载 paramiko是一个用于做远程控制的模块,使用该模块可以登录服务器执行shell命令或实现文件上传下载。 安装paramiko模块 pip3 ...
  • Pythonssh远程执行shell命令 Python调用paramiko模块实现远程管理多台服务器 Python实现SSH远程登陆,并执行命令! Python实现SSH远程登陆,并执行命令! 转载于:https://blog.51cto.com/weiruoyu/2140919
  • 通过nginx远程执行shell

    千次阅读 2014-03-03 10:26:18
    saltstack远程执行shell,远程管理等返回json已经很成熟,扩展也很好用 原理其实就是通过网络协议,aes加密后,用python本地执行shell等系统调用 其实nginx也可以做成远程执行shell 利用nginx的request的args...
  • 主要介绍了python SSH模块登录,远程执行shell命令实例解析,具有一定借鉴价值,需要的朋友可以参考下
  • python远程执行加载/etc/profile环境变量问题解决 问题 当通过ansible远程non login执行python脚本时,默认加载~/.bashrc,所以在执行时可能会找不到环境变量 解决 思路:执行脚本之前,需要进行加载指定环境变量...
  • ssh._transport = self.__transport # ssh.connect(hostname=self.host,port=self.port,username=self.username,password=self.password) # 执行服务器中的shell脚本 stdin, stdout, stderr = ssh.exec_command('sh ...
  • 远程执行shell

    2015-09-02 10:33:00
    目前我的需求是在我的hadoop集群搭建起来前,能定时做一下简易指标的...远程执行脚本如下: ssh root@host "cat /home/harklee/test.log | grep uninstall.jsp000000000000" 但有个前提,要做出免SSH,这个方法...
  • python远程执行 python paramiko 模块的应用
  • [code="python"] #!/usr/bin/python # -*- coding: utf-8 -*- import sys import subprocess import os ''' ...argv[3] 远程rsync ip argv[4] 任务列表地址 ''' c...
  • python SSH模块登录,并在远程执行shell命令 2016-10-24 15:25 565人阅读 评论(0) 收藏 举报  分类: python(289)  http://blog.sina.com.cn/s/blog_53d874320102vdvu.html ...
  • 在自动化测试场景里, 有时需要用代码去获取远程服务器的某些状态, 或是执行一些查询命令,如获取Linux系统版本号 \ 获取CPU及内存的占用等, 本章记录一下使用paramiko模块SSH连接服务器的方式 1. 先安装paramiko库 ...
  • 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 #!/usr/bin/envpython importparamiko hostname='was1' port=22 userna...
  • 直接使用adb shell命令是可以实现一些步骤,在无法调用appium的api实现某些操作时我们可以通过执行adb命令实现,比如某些点击事件,打开指定的文件等。但是若在appium服务器内穿插使用adb shell命令,adb命令可正常...
  • 原因:通过A主机python远程调用B主机的sh脚本,因func和应用使用了不同的用户进行安装,当执行到ssh、scp之类的操作时,访问主机的源用户发生变化,将无法通过鉴权,不能正常完成后续操作解决办...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 346
精华内容 138
关键字:

python远程执行shell

python 订阅