我想從密碼管理器數據庫中構建ssh_config和.alias文件。從數據庫中,我通過JSON獲取所有信息。 然後ssh_config應該如下所示:python替換列表中的元素
Servername
User foo
Port 22
Hostname Servername
可能會出現其他值。別名文件獲得相同的值,但在一行中:
alias Servername="ssh -p 22 [email protected]"
到目前爲止這麼好,這工作正常。但是現在密碼數據庫有幾個條目,一些是相同的服務器,但是不同的用戶。我想要一個用戶名的文件只能以「foo」或「bar」開頭,對於任何其他我假設有管理員用戶,如果有這樣一個管理員用戶的條目我想這個用戶,而不是任何「foo 「或‘ - ’ 這是目前我的函數來創建ssh_config中和別名文件
# define function to add values to files
def fillSSH (item, ssh_config, alias):
# split item name, first is customer server
shortname = item.get('name').split()
# append Host entry to ssh_config
ssh_config.append('Host ' + shortname[0])
# append User entry to ssh_config
ssh_config.append(' User ' + access_url[3])
# If there is a :[port] at the end, we have 6 objects
if len(access_url) >= 6:
# append Port entry to ssh_config if it exists
ssh_config.append(' Port ' + access_url[5])
# create the alias entry just once
aliasurl = 'alias ' + shortname[0] + '="ssh -p' + access_url[5] + ' ' + access_url[3] + '@' + access_url[4] + '"'
else:
# create the alias entry just once
aliasurl = 'alias ' + shortname[0] + '="ssh ' + access_url[3] + '@' + access_url[4] + '"'
# append HostName entry to ssh_config
ssh_config.append(' HostName ' + access_url[4])
# append empty line
ssh_config.append('')
# append entry for alias to list
alias.append(aliasurl)
現在我不知道如何與我不同的用戶進行。我有類似的東西
# split access url by :/@
access_url = re.split(':|/|@',item.get('access_info'))
# if foo or bar, for everyone
if access_url[3] == 'foo' or access_url[3] == 'bar':
fillSSH (item, ssh_config, alias)
# else just for admins if not seen before
else:
fillSSH (item, ssh_config_admins, alias_admins)
所以目前我有兩個想法,我可以在這裏繼續。 1)我必須添加一個var「看到」我添加所有服務器名稱。如果我看到Servername並且新用戶是「foo」或「bar」,我可以忽略管理列表的條目並將其添加到普通列表中。但是如果我看到Servername和新用戶不是「foo」或「bar」,那麼我需要在ssh_config_admins中找到舊條目來替換它。
2)另一個想法是創建一個包含所有「foo」和「bar」用戶的列表以及所有其他用戶的列表。但是,如果沒有其他登錄名的服務器,我想爲我的管理員設置「foo」和「bar」用戶,那麼在這種情況下如何合併它們?我想我必須在列表中走兩遍,一次獲得所有非「foo」和「bar」用戶,第二次獲得foo和bar,如果servername已經在我的列表中,我只需將它們添加到全部列表而不是管理員列表。
因此,對於這兩種情況,我不知道如何真正解決它們,也許有人知道如何甚至是另一種方式我可以去這裏。
我看到了你的問題的標題。你可以像下面這樣替換列表中的元素:your_list [i] = new_object – 2015-02-09 11:51:45