2012-07-15 47 views
-4

如何從CLI中任意提取輸出?我試圖用標準Ubuntu服務器爲AWS EC2/EBS上的NodeJS/MongoDB技術堆棧編寫一個通用的部署/擴展腳本OS(12.04)。目前,我正在通過AWS Dashboard Console手動創建和附加EBS驅動器,但所有其他操作都應該自動進行,而無需通過SSH進行並執行愚蠢的CLI(儘管最終我還想自動創建附件) )。如何從CLI輸出中分配CLI變量

首先,我需要獲取所有要掛載EBS驅動器的塊lsblk -l的列表。 然後,我需要(在第一時間條件)設置的mdadm和LVM,但他們的命令假定我知道塊的名稱,如:

sudo mdadm --create --verbose /dev/md0 --level=10 --chunk=256 --raid-devices=4 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4 

等。這非常簡單...如果我是通過lsblk的CLI輸出進行人類閱讀。但是,如何動態解析/提取並迭代它呢?不知怎的,我需要這樣做(僞代碼):

$EBS_ARRAY = lsblk -l -list_the_names_of_blocks_not_mounted 
sudo mdadm --create --verbose /dev/md0 --level=10 --chunk=256 --raid-devices=EBS_ARRAY.length EBS_ARRAY.join(' ') 
...rest of my script here... 

你可以很明顯的看出,我是一個JavaScript的傢伙毫無章法有關如何使用CLI工作動態無JSON和非交互式(腳本)。所以......你怎麼會以自動的方式隨意地從CLI輸出中提取信息到變量中呢?

謝謝。

+1

一般來說,用咆哮開始一個問題並不是一個好的基調。特別是,如果你抨擊其他人喜歡的東西,並且你打算請同樣的人幫助你。 – fork0 2012-07-15 20:59:06

+1

此外,你的腳本的其餘部分在別處,但不在這裏。並且'lsblk'輸出的例子也會有所幫助 – fork0 2012-07-15 21:00:54

+1

1.你的問題的第一部分顯示了對IT的完全無知。 2.你試過用Google搜索嗎?男子3 popen()會幫助你。 – 2012-07-15 21:04:01

回答

1

如果要分析一個命令的bash腳本輸出有幾個實用工具,比如grepsedawk,以及shell builtins,這有助於操作字符串,以滿足您的需求。

另一方面,你不能真正在bash腳本中進行GUI編程。對於簡單的GUI,如果你在Gnome下,你可以檢查zenity

如果您必須設計高級圖形用戶界面,您可以考慮編程語言,如pythontkinter或其他圖形庫。

如果您必須在服務器上運行這些CLI命令,您可以使用cgi/json模塊在服務器端編寫應用程序,並使用javascript/ajax作爲主要處理語言。

順便說一下,手冊頁並沒有那麼糟糕,而且參數語法在所有命令中都相當一致。

+0

所以你基本上說你不能?除非你對隨機輸出做瘋狂的正則表達式,或者如果你使用另一種語言來爲你提供一個提供的模塊? Blah,如果那是真的,我會將你的答案標記爲正確的,然後讓自己感到註定了CLI:P。謝謝。 – marknadal 2012-07-15 22:35:10