前面介紹過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]+'\t') if 0==seq%nnu: s.write('\n') seq += 1 s.write('\n') 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: