顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。


文章 - barista

頁: [1]
1
引述: "cyc_1979"
我改了寫法如下,還是會有問題
expect {
        "no" {
               send "yes\n"                                      <-檢查字串no
               expect { "pass" { send "$passwd\n"} } <-檢查字串pass
             }
        "pass" {
         send "$passwd\n"
         }
}

當遇到第一段檢查是否有字串no,的確會送"yes/n"
但接下來馬上就會要求送密碼
Warning: Permanently added '$host' (RSA) to the list of known hosts.
$user@$host's password:
它並不會去檢查我的第二段檢查"pass"
請問各位高手,問題出在哪呢 ? 請指教!!


再expect中間, send後面加一個exp_continue

2
酷!學園 精華區 / MSN Alert Testing
« 於: 2005-07-11 22:24 »
請教一下abel大 (先感謝您的大作)
我改寫了 tmsnc+expect
手動run都OK..(就是./某expect檔案 可以跑,寫在php裡也ok)
但是我把他放在shell 用crontab自動執行就跑不出來了
我check過都是用絕對路徑,不知道我遺漏了哪個地方?
請abel大指導一下 謝謝

3
Network 討論版 / Re: 如何做一個update server
« 於: 2005-05-24 10:37 »
引述: "kenduest"
把版權買齊就可以了。

另外更新不要跑出去的話,請參閱 rh 的付費 solution,可以建置自己內部的 update server 提供 client 連線存取。

==

不好意思 請問一下, 我不太懂版權買齊是又多了哪些附加功能?
就我了解可以在lan下面作update server,而我是在不同的lan下面
一樣可解決嗎?

我試過讓某一台來做更新,其他的去抓此台機器rpm來 update
但是因為update server有註冊資訊了,其他機器是不能夠使用的
請指教,謝謝

4
引述: "abelyang"
嗯~您說的沒有錯. 我是太武斷了的說法.若有得罪,請見諒.

我之所以有這樣的想法主要是因為這一句:
log_file ./exp.log 這邊是代表什麼意思?
因為這個部份我覺得 man 一下就會很清楚

不好意思,又麻煩abel大在勞筆一次!我之所以有那個想法,是直覺這行應該是您自己寫的(因為不像系統指令),所以就直接#掉,壓根沒想到是man的內容.expect我也man過了,可能資質駑鈍,似懂非懂,才上網請教先進,但還是謝謝你
引述: "abelyang"

至於程式的部份,請您看一下 man expect 中的一段:
代碼: [選擇]
   expect {
        Password: {
            stty -echo
            send_user "password (for $user) on $host: "
            expect_user -re "(.*)\n"
            send_user "\n"
            send "$expect_out(1,string)\r"
            stty echo
            exp_continue
        } incorrect {
            send_user "invalid password or account\n"
            exit
        } timeout {
            send_user "connection to $host timed out\n"
            exit
            exit
        } -re $prompt
    }

跟您的要求不是很像 ?
至於要不要 log, 用 log_file , [exec ..] , 或 >,>> 都可以
exp_continue 就是回到 該 expect {} 的頭 (像 c 的 continue)
至於兩次 exit 則是一個要退出 spwan , 一個要退出 expect
其他的您慢慢研究看看囉  ...

不過若我做的話,若非設備 (像 Router,Switch..) ,我但都是用
在 HostA or B or C .. run 一個cron 程式, 檢查 disk/cpu/process
...再用HTTP 一次送到 web server , 若 Server 連續兩次以上
沒收到,就 Call MSN, 再未處理,就 Call SMS.
至於像設備的,大概就用 expect 或 snmp 來處理了

abel大真的是經驗非常豐富,從rrd大作我就已經跟您學習了,我也無惡意有那些想法,請多見諒..謝謝

5
引述: "abelyang"
看來你只是抄別人的來用而以 ...
你自己好好 man expect 看一下, 你的問題裏面都有寫

我寫得第一段是沒有經過實驗的,但是是融會貫通後寫出來的
我相信思考邏輯就是這樣而以,問題是你自己有沒有研究

abel大你這樣說就沒啥意義了
我幹麻抄別人的來用
我自己也是網管,遇到問題才會提出來
即使你不寫code出來,我也不會講什麼
你把方法講出來我就很感激了
因為今天的問題在於怎麼解決上述問題
但是既然你把程式碼貼出來,我理所當然的去試試看能不能run
run不出來,也許是你寫的有問題,也許是你只是寫個大概
但你並沒有說清楚不是嗎?我提出疑問有何問題?

但這不是重點,我只想澄清不是來抄襲什麼,我是來解決問題
不希望你用這種口氣來講別人

6
引述: "abelyang"
# ddd.exp
#!/expect -f
log_file ./exp.log

log_file ./exp.log 這邊是代表什麼意思?
引述: "abelyang"

set host [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
spawn ssh $username@$host
expect {
password: {send "$password\n"}
-re ".*Connection timed out" : { send_user "[exec echo $(date): $host was down-G > /tmp/down-G.list]
}

.list] 最後面是不是少了 "}這符號 ?? 可是我加入後還是跑不出來耶 :x
abelyang大請再check一下..謝謝!  :)
引述: "abelyang"

#>./ddd.exp ssh-host username password
當機時(timeout) 寫入 list

不過高明點,可以用 mail, 改 send_user 那段即可
不然可以學我的, 到 www.sf.net 找 tmsnc
改一下程式 (不改也行,但你 要 expect )

#!/usr/bin/expect -f
log_file ./exp.log
set args [lindex $argv 0]
set msgs [lindex $argv 1]
spawn tmsnc
sleep 5
expect -re ".*Recieved and answered challenge.*"
sleep 5
send "/chat $args\r"
sleep 3
expect -re ".*!.*"
send "Now: [exec date]\012\015"
sleep 3
send "$msgs\r"
sleep 3
send "/quit\r"

當機時,用 MSN 送訊息

7
expect程式不知道有誰用過
  一個簡單的ssh程式,請問如果其中一台主機(myip1)掛掉了
  可以在程式中間就判斷他掛了,而去做某些事情嗎?
  (例如:如果掛了,我就寫個訊息到某個檔案裡說明主機目前掛掉中)
                                                                               
  #!/usr/bin/expect -f
  spawn ssh des@myip"
  expect {
        password: {send "mypasswd\n"}
  }
  expect  "$"
  send "exit\n"
                                                                               
  spawn ssh des@myip1"
  expect {
        password: {send "mypasswd1\n"}
  }
  expect  "$"
  send "exit\n"
                                                                               
  spawn ssh des@myip2"
  expect {
        password: {send "mypasswd2\n"}
}
  expect  "$"
  send "exit\n"
                                                                               
                                                                               
interact timeout 5
exit

8
Network 討論版 / 如何做一個update server
« 於: 2005-04-19 10:09 »
我現在有一套rhel版權
但是我有不同的機器在不同的LAN下面
請問我該怎麼做到讓這些機器同時擁有update的功能
謝謝

9
Linux 討論版 / RRDtool 問題請教
« 於: 2005-01-11 13:41 »
引述: "abelyang"
數字上的問題
3,3,5,6,3,9,9,10
rrdtool 基本上 3 以下都不會圖出來,他會以最小值來做為 base

至於 mrtg 603 問題,5 分存 603 筆,共有 3000 分內的 5 分資料
超過 3000 分(約數)以上,改存以 30 分值,這30 分是6 個5分的平均
最小,最大等...詳細說明,你到 www.mrtg.org 上有篇在講 log format
用力看看即知

至於超出 end 會成空白,本來就如此的,因為它只是以資料成圖,
那個時間點沒資料,即不會有圖形
如果你要超過的做一些特別處理,那你要去看 CDEF 的用法
我的文章中講得不多,IF , TIME,GE,LE ...UN ..有很多判斷式可用

讚讚 以上這部分要再學習一下
另外值不顯示3一下我就有點吐血
因為我取RTT值,有些部分就正好是3,2,1的範圍

另外有個關於--step的問題
當我step取300秒(五分鐘) 是不是update的間隔自己就要設定為五分鐘(才有意義?)

如果我每分鐘都有個update值進去(都執行update) (沒意義?)
RRD他是
1.五筆全畫上去或是
2.五筆畫平均值
3.只畫正好第五分鐘的第五筆

問這各問題是因為我每十秒就有個數據出來
我每個10秒的值都要畫上去
請阿伯大大開示

10
引述: "54joe"
我在使用PuTTY會有這個問不知有那位大大可以告訴新手我如何處理呢
謝謝

check 一下對方的防火牆是否檔掉

11
Linux 討論版 / RRDtool 問題請教
« 於: 2005-01-10 22:04 »
今天搞了一天,圖是畫出來了
也寫了script來建立資料
但是圖畫出來不大對勁
我猜是average的問題???
請教一下各位大大
我現在每十秒鐘就有一個資料..每一個資料都要畫上去
像數據59,59,59,3,3,59,59,59,59......
就可以畫出一個波谷
但是我畫出來不是,就59附近游走
請問一下我的create要怎麼寫才對
以下為我的create檔
#!/bin/sh
rrdtool create /root/study/tcpdump.rrd -s 300 -b 1104940790 \
DS:telnet:GAUGE:600:0:10000000 \
RRA:AVERAGE:0.5:1:30 \
RRA:AVERAGE:0.5:6:180: \
RRA:AVERAGE:0.5:24:720 \
RRA:AVERAGE:0.5:288:8640 \
RRA:MAX:0.5:1:603 \
RRA:MAX:0.5:6:603 \
RRA:MAX:0.5:24:603 \
RRA:MAX:0.5:288:800


還有個疑問
之前阿伯的大做說mrtg五分鐘存603筆,那為何30分鐘也存603筆?
超糊塗的?!

我發現RRDtool可以從過去到現在的資料
還可以某短區間的資料,只要改start&end時間
不過如果不是取到現在的時間結束,就可能會有一部分是空白
不知道我說的對不對,這點有點可惜

頁: [1]