亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: expect的問題 [打印本頁]

作者: seanking1987    時間: 2015-11-02 16:44
標(biāo)題: expect的問題
本帖最后由 seanking1987 于 2015-11-02 16:50 編輯

問題一:
  1.     #test command
  2.     expect -re " " {send "ls -ldardwqdq > test.txt \r"}
  3.     expect -re " " {send "echo $?\r"}
  4.     expect {
  5.         "0" {send "echo ok!\r"}
  6.         "2" {send "echo failed!\r"}
  7.     }
復(fù)制代碼
執(zhí)行結(jié)果:
  1. [root@localhost ~]# ls -ldardwqdq > test.txt
  2. ls: 無效的行寬:qdq
  3. [root@localhost ~]# echo $?
  4. 2
  5. [root@localhost ~]# echo ok!
  6. ok!
復(fù)制代碼
如果把expect {
   "0"
   "2"
}
換成
expect {
  "2"
  "0"
}
那么匹配到的是2,不明白expect遠(yuǎn)程send命令之后,判斷返回的機(jī)制是什么?

問題二:
發(fā)送命令如果不寫expect 直接寫send
比如send "ls -lrt > test.txt"發(fā)現(xiàn)有時候會沒有執(zhí)行,是為什么?
作者: yjh777    時間: 2015-11-03 09:16
本帖最后由 yjh777 于 2015-11-03 09:39 編輯

send 只是把信息寫到 stdin, 不管執(zhí)行

你最好 expect 命令行提示符序列,不要只匹配 空格

http://www.72891.cn/thread-3566066-1-1.html
作者: seanking1987    時間: 2015-11-03 09:40
回復(fù) 2# yjh777

send的命令后加\n,\r也不行?會從緩沖區(qū)輸出吧?
前面加入了expect就肯定可以輸出了?
還是不太明白
作者: expert1    時間: 2015-11-03 09:47
expect -d your.exp看下整個執(zhí)行過程就明白了。
作者: seanking1987    時間: 2015-11-03 10:04
回復(fù) 4# expert1

thanks,昨天剛寫expect,還在想為什么沒有和shell一樣的sh -x看過程,方便調(diào)試。
有了這個可以自己慢慢研究了。
作者: seanking1987    時間: 2015-11-03 14:00
回復(fù) 4# expert1


再請教個問題,假如我想用expect 匹配多個表達(dá)式 后做同一個動作,比如普通用戶是匹配*$,而root用戶是匹配*#,他們之間匹配或關(guān)系
那么expect "*$|*#" 這樣寫是匹配不上,expect -re "*$|*#"是報錯,應(yīng)該怎么寫?
作者: yjh777    時間: 2015-11-03 15:28
expect -re ".*[#$]"
作者: seanking1987    時間: 2015-11-03 16:26
本帖最后由 seanking1987 于 2015-11-03 16:26 編輯

回復(fù) 7# yjh777

thanks,正則表達(dá)式,哎,還有好多東西要看啊。
另[]要轉(zhuǎn)義

   
作者: yjh777    時間: 2015-11-03 17:01
本帖最后由 yjh777 于 2015-11-03 17:02 編輯
seanking1987 發(fā)表于 2015-11-03 16:26
回復(fù) 7# yjh777

thanks,正則表達(dá)式,哎,還有好多東西要看啊。


哦,sorry 大意了 沒有測試; 謝謝提醒 [] 在tcl里是命令替換!

把"" 改成 {} 就不需用轉(zhuǎn)義了
expect -re {.*[#$]}
作者: waker    時間: 2015-11-04 08:54
回復(fù) 1# seanking1987
問題一:眼見未必為實  => 眼睛看不到0,并不代表機(jī)器返回的結(jié)果中沒有0, 比如echo -e '0\rab' 看看
問題二:機(jī)器通常比手快 => 典型的spawn ssh ip ; send "username\r" 如果ip是臺linux,99.9%不會成功

   
作者: waker    時間: 2015-11-04 09:01
關(guān)于問題二, 可以研究一下 send -h
是比較有意思的一個選項




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2