Pythonサーバ管理ツールの実装
簡単なサーバー管理ツール(コマンドラインツール)を実現し、ツールパスは/xxx/xxx/serverである.py、このツールは以下の機能をサポートするだけです.
1.機能説明
サーバの追加(addコマンド):次のパラメータ-h hostip,-u user,-p passwordをサポートします.3つのパラメータは記入する必要があります.そうしないと、エラーが発生します.例:server.py add -h 127.0.0.1 -u abc -p abc. ≪サーバーのリスト|List Server|ldap≫(listコマンド):パラメータがなく、現在格納されているすべてのサーバー情報がリストされます.例:server.py list、出力例:$server.py list 127.0.0.1 abc abc 192.168.1.1 ubuntu password削除サーバ(delete):パラメータ-h hostipをサポートします.例:server.py delete -h 127.0.0.1.成功したら出力なし
2.需要サーバー情報を保存するには、データベースを使用しないで、ファイルの場所/home/shiyanlou/serverinfoを保存する必要があります.フォーマットは制限されません.
3.異常処理は以下の異常を処理するだけで、処理方式は1本のERROR:啓示のエラー情報を返すだけである.
パラメータが不足しています.例:server.py add-h 127.0.0.1-u abcコマンドはサポートされていません.例えば、server.py test server.py add時にサーバが追加されました.たとえば、同じパラメータのaddコマンドを2つ連続して実行します.
1.機能説明
サーバの追加(addコマンド):次のパラメータ-h hostip,-u user,-p passwordをサポートします.3つのパラメータは記入する必要があります.そうしないと、エラーが発生します.例:server.py add -h 127.0.0.1 -u abc -p abc. ≪サーバーのリスト|List Server|ldap≫(listコマンド):パラメータがなく、現在格納されているすべてのサーバー情報がリストされます.例:server.py list、出力例:$server.py list 127.0.0.1 abc abc 192.168.1.1 ubuntu password削除サーバ(delete):パラメータ-h hostipをサポートします.例:server.py delete -h 127.0.0.1.成功したら出力なし
2.需要サーバー情報を保存するには、データベースを使用しないで、ファイルの場所/home/shiyanlou/serverinfoを保存する必要があります.フォーマットは制限されません.
3.異常処理は以下の異常を処理するだけで、処理方式は1本のERROR:啓示のエラー情報を返すだけである.
パラメータが不足しています.例:server.py add-h 127.0.0.1-u abcコマンドはサポートされていません.例えば、server.py test server.py add時にサーバが追加されました.たとえば、同じパラメータのaddコマンドを2つ連続して実行します.
#!/usr/bin/python
import os,sys
class Server:
def __init__(self,serverfile):
self.serverfile = serverfile
#
def addserver(self,hostip,user,password):
try:
# , , ,
ipargv = []
flag = 0
f = open(self.serverfile,'r')
lines = f.readlines()
#
for line in lines:
if not line:
break
ipargv = line.split()
if len(ipargv) > 0:
if ipargv[0] == hostip:
flag = 1
f.close()
break
if flag == 0:
with open(self.serverfile,'a') as sf:
sf.write(hostip + ' ' + user + ' ' + password +'
')
else :
raise redunError(' ip !')
except IOError:
print('serverinfo.txt !')
except redunError as err:
print(err)
def delserver(self,hostip):
# , ,
with open(self.serverfile, 'r') as r:
lines = r.readlines()
with open(self.serverfile, 'w') as w:
for l in lines:
if hostip not in l:
w.write(l)
break
def serverlist(self):
try:
with open(self.serverfile,'r') as sf:
str = sf.read()
return str
except IOError:
print('serverinfo.txt !')
#
class lackError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
class redunError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
class commandError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
serverfile = '/xxx/xxxxx/serverinfo.txt'
server = Server(serverfile)
#
if len(sys.argv) >= 8:
try:
if sys.argv[0] == 'server.py' and sys.argv[1]=='add' and sys.argv[2]=='-h' and sys.argv[4]=='-u' and sys.argv[6]=='-p':
hostip = sys.argv[3]
user = sys.argv[5]
password = sys.argv[7]
server.addserver(hostip,user,password)
else:
raise lackError(' !')
except lackError as e:
print(e.value)
elif len(sys.argv) >= 2 and len(sys.argv) <8:
try:
if sys.argv[0] == 'server.py' and sys.argv[1]=='list':
servlist = server.serverlist()
print(servlist)
#
elif sys.argv[0] == 'server.py' and sys.argv[1] =='delete':
server.delserver(sys.argv[3])
#
elif sys.argv[0] == 'server.py' and sys.argv[1] == 'add':
raise lackError('Insufficient command!')
else:
raise commandError('no support command!')
except commandError as e:
print(e.value)
except lackError as e:
print(e.value)