zoukankan      html  css  js  c++  java
  • python 中调用shell命令

    subprocess模块


    根据Python官方文档说明,subprocess模块用于取代上面这些模块。有一个用Python实现的并行ssh工具—mssh,代码很简短,不过很有意思,它在线程中调用subprocess启动子进程来干活。

    [python] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. >>> from subprocess import call  
    2. >>> call(["ls", "-l"])  


    subprocess与system相比的优势是它更灵活(你可以得到标准输出,标准错误,“真正”的状态代码,更好的错误处理,等..)。我认为使用os.system已过时,或即将过时。

    #!/usr/bin/env python
    #encoding=utf-8
    
    import os
    from subprocess import call
    call(["ls","-l"])
    
    path=os.getenv("phone_path")
    print os.getenv("phone_path")
    call(["adb","root"])
    call(["adb","pull","/system/lib64/libteec.so",path+"/ree/client/libteec.so_64"])

    可以执行获取环境变量,

    执行adb pull命令。

    太厉害了。

    #!/usr/bin/env python
    #encoding=utf-8
    
    import os
    from subprocess import call #通过call调用shell命令
    from hashlib import sha1    #计算sha1sum值
    
    call(["ls","-l"])
    
    #实现从jenkins环境变量获取值
    path=os.getenv("phone_path")
    print os.getenv("phone_path")
    
    #实现adb pull,环境变量直接引用不用加引号,用+即可
    call(["adb","root"])
    call(["adb","pull","/system/lib64/libteec.so",path+"/ree/client/libteec.so_64"])
    
    #实现adb push
    #call(["adb","remount"])
    #call(["adb","push",path+"/ree/client/libteec.so_64","/system/lib64/libteec.soa"])
    
    #实现adb shell
    #call(["adb","root"])
    #call(["adb","shell","chmod","-R","777","/system/lib/nutlet_armtz/"])
    #call(["adb","shell","./system/lib/nutlet_armtz/nutlet_helloworld"])
    
    #计算sha1sum值
    def getSha1(filename): #计算sha1
        sha1Obj = sha1()
        with open(filename,'rb') as f:
            sha1Obj.update(f.read())
        return sha1Obj.hexdigest()
    
    print getSha1(path+"/ree/client/libteec.so_64")
    
    #下面的调用可以当做一个整体,类似于在终端输入命令,其中间仍然可以调用参数,参数在引号外面
    call("sha1sum " + path + "/ree/client/libteec.so_64 > remote_sha1", shell=True)
    call("sha1sum " + path + "/ree/client/libteec.so_64 >> remote_sha1", shell=True)
    #call(["sha1sum",path+"/ree/client/libteec.so_64",">","remote_sha1"])
    
    
    print 'ok'
  • 相关阅读:
    JavaScript 正则表达式上——基本语法
    温故知新 javascript 正则表达式
    Js把IE COM数组列表转换成数组
    Linux用户和用户组管理总结
    Linux FTP 服务器配置简单说明
    Linux中Samba详细安装
    js本地存储解决方案(localStorage与userData)
    通过了解渲染过程来提高页面性能
    使用Chrome DevTools的Timeline和Profiles提高Web应用程序的性能
    内存泄漏,循环引用
  • 原文地址:https://www.cnblogs.com/luolizhi/p/5591369.html
Copyright © 2011-2022 走看看