2014-12-01 123 views
1

我試着去編寫一個腳本,RSH的到UNIX計算機和某些文件在UNIX中的Bash shell腳本rsh到另一臺機器上執行命令

  1. RSH的交給機器來執行某些命令(在這種情況下,一臺名爲uk01ff200)
  2. 搜索目錄中機
  3. 則該目錄搜索開始核心文件中
  4. 在這些文件上執行一個命令(如果存在的話),然後創建新文件

SCRIPT至今:

#!/bin/bash 
# 
MACHINE=uk01ff200 
DIRECTORY=/var/core 

rsh $MACHINE "cd /var/core" 
for file in `ls -1 core.*`   
do stack_dump $file   
done 

當我這樣做是它的工作原理在命令行外殼手動。因此,如果我將rsh轉移到機器上,請cd到該目錄,然後鍵入for循環它的工作(所以我知道for循環語法是正確的)。所以我不知道我的腳本出錯了。

+0

非交互'rsh'不啓動一個shell你。那些下一行將在本地運行,而不是在遠程主機上運行。你需要使它們成爲'rsh'本身的命令參數的一部分。 – 2014-12-01 16:43:19

+0

@EtanReisner你能告訴我在這種情況下你會怎麼做? – nrs90 2014-12-01 17:55:58

回答

1

我會做什麼用here-document

#!/bin/bash 
# 
MACHINE=uk01ff200 
DIRECTORY=/var/core 

rsh $MACHINE bash <<'EOF' 
cd /var/core 
for file in core.*   
    do stack_dump "$file"   
done 
EOF 
+0

感謝您的建議!似乎沒有工作,但?當我運行腳本時,shell會返回: 'rlogin:關閉連接.' 此腳本中是否缺少任何內容? – nrs90 2014-12-01 17:44:24

+0

您是否測試了我上次編輯的代碼片段?你檢查過stack_dump是否已經被執行了嗎? – 2014-12-01 17:59:52

+1

我認爲這需要'rsh'$ MACHINE「bash」或類似的運行shell來接收標準輸入或單個字符串作爲參數。 – 2014-12-01 18:00:11

相關問題