以前在windows系統(tǒng)下面使用xshell來管理阿里云上的服務(wù)器,winscp來上傳網(wǎng)站的資料萍肆,由于winscp使用的私鑰必須是.ppk格式袍榆,而xshell使用普通的私鑰,每次都要用putty工具來轉(zhuǎn)換塘揣,很麻煩包雀。后來使用xftp來替代winscp,xftp和xshell使用同樣的私鑰亲铡,這套組合在windows平臺上面管理服務(wù)器非常方便才写,推薦使用。
然而Mac OS上面奖蔓,沒有這個套工具赞草,由于Terminal可以直接使用sftp和ssh命令,用來管理阿里云服務(wù)器也很不錯锭硼。但是房资,管理多臺服務(wù)器非常麻煩,最好腳本統(tǒng)一管理檀头。因此我設(shè)計的腳本具有如下功能:
- 同一個命令可以用于ssh連接或者sftp連接
- 一個腳本最好能管理所有的服務(wù)器
- 腳本能夠展示所有可用的服務(wù)器轰异,方便選擇
- 要有良好的幫助信息
最終的命令格式如下:
sshlink -l展示所有可以用的服務(wù)器名
sshlink -h或者sshlink --help顯示幫助信息
sshlink -s server_name表示使用ssh協(xié)議連接服務(wù)器
sshlink -f server_name表示使用sftp協(xié)議連接服務(wù)器
代碼如下岖沛,注意:代碼中隱藏了關(guān)鍵的IP信息,請自行修改:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
作用:'sshlink -[lsfh] severName'命令對服務(wù)器進(jìn)行訪問
arg參數(shù)如下:
-l: 顯示可用的服務(wù)器名字
-s: 使用ssh命令進(jìn)行連接服務(wù)器
-f: 使用sftp命令進(jìn)行連接服務(wù)器
-h: 顯示幫助信息
--help: 顯示幫助信息
"""
import sys
import os
argv = sys.argv
BASE_URL = '/Users/HomePath/.ssh/' # 存放私鑰的路徑
serverName = {
'server1': ('ip1', 'server1.key'),
'server2': ('ip2', 'server2.key'),
}
def sshlink():
if len(argv) == 1: # 沒有參數(shù)的時候顯示幫助信息
print __doc__
elif argv[1] == '-l': # 顯示所有的可用服務(wù)器名
print 'Servers can be used: ', ' '.join(serverName.keys())
elif argv[1] == '-s': # 使用ssh進(jìn)行連接
if len(argv) == 3 and argv[2] and argv[2] in serverName:
sshcmd = list()
sshcmd.append('ssh root@' + serverName[argv[2]][0])
sshcmd.append('-i')
sshcmd.append(os.path.join(BASE_URL, serverName[argv[2]][1]))
os.system(' '.join(sshcmd))
else:
print "Need Server Name: ", ' '.join(serverName.keys())
elif argv[1] == '-f': #使用sftp進(jìn)行連接
if len(argv) == 3 and argv[2] and argv[2] in serverName:
sftpcmd = list()
sftpcmd.append('sftp -i')
sftpcmd.append(os.path.join(BASE_URL, serverName[argv[2]][1]))
sftpcmd.append('root@' + serverName[argv[2]][0])
os.system(' '.join(sftpcmd))
else:
print "Need Server Name: ", ' '.join(serverName.keys())
elif argv[1] == '--help' or argv[1] == '-h':
print __doc__
print "Servers can be used: ", ' '.join(serverName.keys())
else:
print "Only support -l, -s, -f, --help"
if __name__ == '__main__':
sshlink()
使用sudo ln -s在系統(tǒng)路徑中建立一個軟連接搭独,并且賦予執(zhí)行權(quán)限sudo chmod 700 sshlink婴削,然后就可以正常使用命令了。如果需要增加服務(wù)器牙肝,那么就修改該代碼中的ServerName字典唉俗,然后就能正常使用。