タイトルの誤解をおかけして申し訳ありませんが、小さなタイトルで問題を説明できませんでした。それは大きな問題ではありませんが、とにかく混乱します。異なるタイプの属性を印刷し、グループ要素で選択したタイプのすべてのApp要素をPythonで一覧表示する
電流出力:
1) Deployment
2) Service Status
3) List Servers
4) Restart Service
5) Restart Server
6) Execute Commands on Servers
Make your choice: 4
1) Group
2) Single Machine
Group or Single Machine?: 1
1) The Perfect Life
Which group?: 1
1) Tomcat
1) JBoss
2) Tomcat
1) JBoss
2) Tomcat
1) JBoss
Select a service: --????--*
XML:私は何をしたいのか、そう
if GroupList:
for App in Group.getElementsByTagName('App'):
print App.getAttribute('id')+") "+App.getAttribute('type')
sList = raw_input("Select a service: ")
App = Group.getElementsByTagName('App')[int(sList)-1]
print (' ')
if sList:
x = App.getAttribute('state')
stype = App.getAttribute('type')
trigger = 0
while trigger < 1:
if x == 'ok':
try:
getDeployPath = App.getAttribute('path')
sIP = Server.getAttribute('ip')
sUSER = Server.getAttribute('username')
sPASS = Server.getAttribute('password')
if not sUSER:
sUSER = Group.getAttribute('username')
if not sPASS:
sPASS = Group.getAttribute('password')
dssh = paramiko.SSHClient()
dssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
dssh.connect(sIP, username=sUSER, password=sPASS)
And it goes...
...
...
:
<Group id="1" name="The Perfect Life"
username="root" password="mypasswd123" state="ok">
<Server id="1" name="Machine (250)" ip="192.168.1.250" username="" password="" state="ok">
<App id="1" type="Tomcat" state="ok" />
</Server>
<Server id="2" name="Machine (251)" ip="192.168.1.251" username="" password="" state="ok">
<App id="1" type="JBoss" path="" state="ok" />
<App id="2" type="Tomcat" path="" state="ok" />
</Server>
<Server id="3" name="Machine (252)" ip="192.168.1.252" username="" password="" state="ok">
<App id="1" type="JBoss" path="" state="ok" />
<App id="2" type="Tomcat" path="" state="ok" />
</Server>
<Server id="4" name="Machine (253)" ip="192.168.1.253" username="" password="" state="ok">
<App id="1" type="JBoss" path="" state="ok" />
</Server>
</Group>
コード官能化されてない "サービスを選択し、" 一部を取得するには?
1)私は、TomcatとJBossを印刷します(または新しいアプリケーションをXMLに追加して印刷するときに)簡単に異なるタイプを印刷します。
2)選択後、すべてグループサーバの下にある選択したサービスタイプのすべてのアプリケーションタグを選択します。私はもっと多くのグループを追加します。
私はすべてを自分で試しました。キーでそれらをグループ化しようとしましたが、選択後に私は立ち往生しています。
注:私はPythonのデフォルトのミニドームライブラリを使用しています。 lxmlなどではありません。
おかげ
私はlxmlのに慣れていないよ、私はPythonのデフォルトのxml.minidomを使用しています。私のXMLスキーマはこのように最高です。木として。サーバーグループの最初のタグ。指定されたグループ内のサーバーの2番目のタグ。また、サーバーの下で実行されているアプリケーションのAppタグ。私は本当に人々が私の質問を理解していない方法を理解していない。それは非常に簡単な質問です。もう一度説明しましょう:私は2つの焦点にある。そのうちの1つ、指定されたグループのすべてのApp Elementsを選択します。 (例として、「The Perfect Life」の「すべてのApp Elements」)、さまざまなAppタイプが印刷されます。 (JBossとTomcat [For Now]) – nightrider84
Second Focus:選択した後(E.G. JBoss)指定グループ内のすべてのJBoss用App Elementsを印刷します(「Perfect Life」のすべてのJBoss Attributed App Elements)。 @MattH – nightrider84
まあ、私のソリューションは、あなたが求めたことを行うと思う – MattH