exp_send 送出字串會加上 \r

探討「內嵌」以及「腳本化」這兩個主題的技術-版主XO老師(熟悉的目前是 Tcl,討論內容也會環繞在 Tcl 四周,但是本版還是歡迎其他 Scripting 語言以及任何「內嵌」技術的討論。)

版主: b80203, ghost3401, XO, maa

分享到: Facebook

exp_send 送出字串會加上 \r

文章arktos » 週三 9月 02, 2015 2:56 pm

不曉得有人遇到嗎?
原如碼截錄如下:
exp_send "/usr/bin/md5sum ${folder1}/${file1}.${temp_suffix} | /bin/cut -d ' ' -f 1\r"
set timeout 90
expect {
-re "md5sum .+${temp_suffix}.+f 1\[\r\n]+(\[0-9a-f]\{32\})\[\r\n].+${os_prompt}" {
set md5sum1 "$expect_out(1,string)"
}

上述程式碼主要是取出 md5sum 的 md5
但是,小弟觀察 buffer 變化時,發現 Redhat 6.4 x64 的 expect 好像會加上 \r
就好像 terminal 有邊界 ex. 80x24, 會在超過 80個字元後面換到下一行
buffer 如下:
expect: does " /usr/bin/md5sum /XXXX/XXXXXXX/XXXXXX/XXXX/XXXXXXXXX/XXX/20 \r15-08-31/YYYYYYY+YYYYYYYYYY_2015-08-31_16-30-54.tar.gz.TEMP | /bin/cut -d ' ' -f \r 1\r\n2017588475f6ed603dba55259a342cc7\r\n\u001b]0;root@test-01:~\u0007[root@test-01 ~]# " (spawn_id exp4) match regular expression "md5sum .+TEMP.+f 1[\r\n]+([0-9a-f]{32})[\r\n].+root@.+ .+].*#"? Gate "md5sum *TEMP*f 1*root@* *]*#"? gate=no
"md5sum .+md5sum: .+: No such file or directory"? Gate "md5sum *md5sum: *: No such file or directory"? gate=no
"md5sum .+md5sum: .+: : Is a directory"? Gate "md5sum *md5sum: *: : Is a directory"? gate=no

根據之前的經驗,什麼時候會加 \r 好像沒有什麼規則,所以只好將判斷規則簡化
不過,總覺得這是個問題...

另外,我是用 linux ssh 到 另外一台 linux 執行上述程式
會不會是 ssh 本身 terminal 設定的問題?

不知道有哪位大德可以給小的一點建議
謝謝
arktos
剛學走路的小朋友
 
文章: 3
註冊時間: 週二 9月 24, 2013 2:30 pm

回到 內嵌與腳本化(Embedding & Scripting)

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客

cron