前面介紹過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)[email protected] 2)[email protected] 3)[email protected]
Select: