• paramiko学习笔记


    1.Linux安装paramiko要先安装好python-devel和PyCrypto的模块
    Windows安装paramiko要先安装好pycrypto和ecdsa两个模块。
    2.paramiko例子
    1)ssh例子
    [root@scctmpdev02101:/root/python]#vim paramikosshv2.py
    #!/usr/bin/python
    #coding=utf-8 #python2的编码默认是ASCII,你的文件里有中文就必须要用utf-8编码,只要在文件需要在文件
    import paramiko
    import sys #读取参数
    import getpass #人机交互读取密码
    USER = 'root'
    PASSWORD = 'xxxxxx'
    PASSWORD = getpass.getpass('Input Password: ')
    COMMAND = 'touch /tmp/20170307103210'
    COMMAND = "touch /tmp/`date +%Y%m%d%H%M%S`"
    COMMAND =  open(sys.argv[1]).read()
    #for line in open('/root/python/host_hdpdev').readlines():#absolute path or relative
    for line in open(sys.argv[2]).readlines():
            if  line.startswith('#'):
                    print 'the line is not  a valid IP:' + line.strip()
            else:
                    print 'the line is a valid IP:' + line.strip()
                    IP = line
                    paramiko.util.log_to_file('/root/python/paramiko.log')#每次都是追加写入
                    s = paramiko.SSHClient()
                    s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
                    s.connect(hostname=IP,username=USER,password=PASSWORD)
                    stdin,stdout,stderr = s.exec_command(COMMAND)
                    print line.strip() + '执行结果' + ' ' + stdout.read() + ' ' + stderr.read()
                    s.close
    2)sftp例子
    [root@scctmpdev02101:/root/python]#vim paramikosftp.py
    import sys,paramiko,threading,getpass,os
    action = sys.argv[1]
    flag = '-p'
    username = sys.argv[3]
    password = getpass.getpass('Password: ')
    sourcepath = sys.argv[4]
    targetpath = sys.argv[5] if not sys.argv[5].endswith('/') else sys.argv[5] + '/' + os.path.basename(sourcepath)
    #for line in open('/root/python/host_hdpdev').readlines():#absolute path
    for line in open(sys.argv[2]).readlines():#absolute path
            if  line.startswith('#'):
                    print 'the line is not  a valid IP:' + line.strip()
            else:
                    print 'the line is a valid IP:' + line.strip()
                    host=line.strip()
                    t = paramiko.Transport((host,22))
                    try:
                            t.connect(username=username,password=password)
                    except Exception as e:
                            print host,str(e)
                    sftp = paramiko.SFTPClient.from_transport(t)
                    #if  action == flag:
                    #if  action.strip() == '-p':
                    if  (action == '-p'):
                            sftp.put(sourcepath,targetpath)
                    else:
                            sftp.get(sourcepath,targetpath+'_'+host)
                    t.close()
    3 for例子

    1)for i in range(0,10):
            if i > 5:
                break; #在值为6的时候退出for循环
            else:
                    print "hello world";

    2)for遍历读取文件行

    for line in open('/root/python/host_hdpdev').readlines():#absolute path
            if  line.startswith('#'):
                    print 'the line is not  a valid line.strip()' + line.strip()
            else:
                    print 'the line is a valid line.strip():' + line.strip()

    for和open文件结合的用法
    for val in open("./host_hdpdev","r").read():#遍历文件的第一行,把第一行中的每个字符作为一行来读取
        print val

    for val in open("./host_hdpdev","r").readline():#把文件的每个字符作为一行来读取
        print val

    for val in open("./host_hdpdev","r").readlines():#一行一行读取文件
        print val

  • 相关阅读:
    线程池3种终止方式比较
    SQL Update多表联合更新的方法
    SQL SERVER 表添加新字段
    JSONObject
    char码值对应列表大全
    JSONOjbect,对各种属性的处理
    Spring MVC ajax提交方式
    docker 初学者 安装 命令
    VMware虚拟机安装CentOS7 设置Nat网络 (超详细)
    关于 i++ 和 ++ i
  • 原文地址:https://www.cnblogs.com/dotagg/p/6520252.html
Copyright © 2020-2023  润新知