2011-12-02 96 views
0

最近,我參與了使用csh shell編寫SunOS shell腳本的準備。我將有多個查詢,但首先短程序不起作用。準備shell腳本

[username]% expect - << EOF 
Spawn telnet 74.125.71.103 
expect "Password:" 
send "google\r" 
EOF 

以下錯誤彈出:

/bin/csh: Event not found 
[username]% expect: Command not found 

請指教。

這個腳本應該按以下方式運行:

  1. TELENT的IP,並使用現有的passwd(在腳本中明確給出)。
  2. 遠程登錄後,它示出了菜單選項
  3. MB站
  4. RC
  5. ODU
  6. AP
  7. SU
  8. 退出

    類型1 //一個「MB站「菜單選項將打開,即

1 - 顯示
2 - 單元控制

2型// UC菜單選項會打開即

1 - 更改密碼
2 - 復位

型1 //更改密碼菜單選項將打開,即

1 - 更改PC密碼
2 - 更改密碼LU
3 - 更改管理員密碼

型3 //改變ADMIN passwd文件

MB站 - 更改管理員密碼
輸入新密碼:XYZ進入
重新輸入密碼:XYZ輸入

新密碼接受

3倍逸出//從遠程登錄

1.MB站
2. RC
3. ODU
4. AP
5. SU
6逸出。退出

類型6 //退出
退出? [Y/N] y以丟失的主機

連接。

然後移動到不同IP的步驟。在提示處執行腳本時,用戶一次性給出IP值。 ./pass-change IPs.txt

+0

問題出在第一句:'with csh shell'。請勿使用[C Shell](http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/)進行嚴肅的編程。 –

回答

1

Event not found消息意味着你試圖做一些歷史替換。這通常涉及!字符。你在某個時候輸入了一個!的字符嗎?

expect: Command not found意思就是說:shell無法找到expect命令。它是否安裝?如果沒有的話,你應該安裝它,或者讓系統管理員爲你安裝它,或者如果沒有,obtain the source並且在你的主目錄下構建並安裝它。

一旦你解決這個問題,有一個期望命令調用spawn,它是區分大小寫的; Spawn將不被識別。

如果您在具體詢問如何在不使用expect的情況下完成上述,請更新您的問題以清楚說明。

+0

雅,我在shell的開始:「#!/ bin/csh」作爲Shebang ...應該是一個問題嗎? ya,看起來「沒有安裝Expect,那麼如果我必須在SUnOS上創建一個腳本來調用遠程登錄(比如telnet),那怎麼可能?你可以不用期望地爲我重新構建它嗎? – ErAB

+0

@Ashish:沒有,shebang中的'!'沒有調用歷史記錄機制,很難說出是什麼,你應該能夠安裝'expect',我不明白你想做的事情足以建議一個替代方案,試着告訴我們你要完成的是什麼,而不僅僅是你嘗試過的那些方法沒有起作用 –

+0

該腳本即將把10臺機器的passwd從現有的passwd(所有機器都通用)更改爲新的passwd(再次,應該是所有的機器相同) – ErAB

0

我在下面有一個工作腳本,你會得到錯誤,因爲我相信你正在嘗試使用sh或其他命令來運行腳本。嘗試運行它爲./script。我使用下面的示例腳本進行文件傳輸,但是我通過ssh來回交換了一次密鑰交換,這是一次性活動。 ! #在/ usr/bin中/期望-f 設定的超時130 產卵SSH 「[email protected]」 期望 「密碼:」 發送 「通過@ 1234 \ R」 期望 「$」 發送「SH/home/nathalok/HTML/run.sh \ r「 expect」$「 send」exit \ r「

+0

忽略格式化,所有代碼都在單行中 – user3754136