zoukankan      html  css  js  c++  java
  • 使ssh记住密码

    前面介绍过Conemu , Msys2工具,提升了windows本地文件操作的效率,但使用ssh时候,总需要重新输入密码,不能像SercurityCRT等工具记住密码,使用时不是很爽快。

    其实通过sshpass 工具和python脚本就可以实现ssh记住密码的功能。

    首先,通过pacman -S sshpass 安装sshpass

    然后再编写 python脚本 如下:

    #!/usr/bin/python2
    import io,os,pickle,getopt,sys
    
    DataFile='/c/Users/zhoushuang/bin/h.dat'
    Hosts=[]
    
    def loadHosts():
        global Hosts
        if os.path.isfile(DataFile):
            with open(DataFile,'rb') as f:
                Hosts = pickle.load(f)
        else:
            with open(DataFile,'wb') as f:
                pickle.dump(Hosts,f)
    
    def saveHosts():
        global Hosts
        with open(DataFile,'wb') as f:
            pickle.dump(Hosts, f)
    
    def printHosts():
        global Hosts
        seq = 1
        nnu = 4
        s = io.BytesIO()
        for item in Hosts:
            s.write(str(seq)+')'+item[0]+'	')
            if 0==seq%nnu:
                s.write('
    ')
            seq += 1
        s.write('
    ')
        print s.getvalue()
    
    def exessh(args): 
        os.execlp('sshpass', 'sshpass', '-p',args[1],'ssh',args[0])
    
    
    def select():
        global Hosts
        printHosts()
        si=input('Select:')
        if si>0:
            si-=1
            exessh(Hosts[si])
        elif si < 0 :
            si=abs(si)
            del Hosts[si-1]
            saveHosts()
    
    def updateHosts(args):
        global Hosts
        flag=True
        for it in Hosts:
            if it[0]==args[0]:
                it[1]=args[1]
                flag=False
                break
        if flag:
            Hosts.append(args)
        saveHosts()
    
    def usage():
        print ''' rssh is a python script, use sshpass to login ssh server, and save pwd.
            rssh [-s]  <user@host>  <pwd>  -- firt login to a host , must use-s 
            rssh                           -- list hosts then select certain host to login
            rssh -h                        -- print help info'''
    
    # main process
    loadHosts()
    try:
        opts, args = getopt.getopt(sys.argv[1:], "sh", ["start","help"])
        if len(args) == 2 :
            updateHosts(args)
        for opt, arg in opts:
            if opt in ('-s','--start') and len(args) == 2 :
                os.execlp('ssh','ssh',args[0])
                break
            if opt in ('-h','--help'):
                usage()
                exit(0)
        if len(args)==2 :
            exessh(args)
        select()
    except getopt.GetoptError:
        print "ERROR"
    except KeyboardInterrupt:
        pass

    python 脚本的作用就是记住密码,并写入文件中。

    以后采用此python 脚本登录远程机器,就能记住密码了,下次登录时可以直接选择要登录的机器。 效果如下:

    zhoushuang@zhoushuang02 MSYS /c/Users/zhoushuang/bin
    $ rssh
    1)mcbadm@192.168.127.140        2)mcbadm@192.168.127.141        3)mcbadm@192.168.127.136
    
    Select:
  • 相关阅读:
    python函数定义,函数参数
    jmeter之实战总结
    Codeforces Round #384 (Div. 2) B. Chloe and the sequence
    Codeforces Round #384 (Div. 2) C. Vladik and fractions
    CodeForces
    Codeforces Round #383 (Div. 2) B. Arpa’s obvious problem and Mehrdad’s terrible solution
    Codeforces Round #385 (Div. 2) A. Hongcow Learns the Cyclic Shift
    CodeForces
    CodeForces
    Codeforces Round #382 (Div. 2) B. Urbanization
  • 原文地址:https://www.cnblogs.com/piepie/p/8492487.html
Copyright © 2011-2022 走看看