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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 4106 | 回復: 10
打印 上一主題 下一主題

[文本處理] expect問題求助 [復制鏈接]

論壇徽章:
1
19周年集字徽章-19
日期:2019-08-22 08:47:17
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2019-08-20 16:04 |只看該作者 |倒序瀏覽
本帖最后由 mychnunixwebsite 于 2019-08-20 17:26 編輯


    使用expect遇到一些問題,登陸目標主機后,間隔兩秒執(zhí)行send "echo $(date "+%Y-%m-%d %H:%M:%S")\r",按理說延遲2秒后執(zhí)行的時間應該多2了秒,但顯示出來時間是一樣的,請教一下這個問題要怎么解決呢?
    如果間隔兩秒執(zhí)行 send "date \"+%Y-%m-%d %H:%M:%S\"\r" 后執(zhí)行的命令顯示的時間是正常的,比先執(zhí)行命令的時間多2秒。

執(zhí)行結(jié)果截圖:


代碼:

/usr/bin/expect>>log/log.log 2>&1<<EOF

    set timeout 5
    spawn ssh $3@$1 -p $2
    sleep 3

    send "$4\r"
    sleep 1

    send "su $5\r"
    sleep 1

    send "$6\r"
    sleep 1

    send "echo $(date "+%Y-%m-%d %H:%M:%S")\r"
    sleep 2

    send "echo $(date "+%Y-%m-%d %H:%M:%S")\r"
    sleep 2

    send "date \"+%Y-%m-%d %H:%M:%S\"\r"
    sleep 2

    send "date \"+%Y-%m-%d %H:%M:%S\"\r"
    sleep 2

    send "exit\r"
    send "exit\r"

expect eof
EOF



jt.jpg (25.48 KB, 下載次數(shù): 143)

jt.jpg

論壇徽章:
0
2 [報告]
發(fā)表于 2019-08-20 16:27 |只看該作者
本帖最后由 jzsjm1002 于 2019-08-20 16:31 編輯
  1. #!/bin/bash
  2. #

  3. dip=IP
  4. pw=密碼

  5. login_exp(){
  6.   expect -c "spawn ssh root@$1 -p22
  7.     set timeout -1
  8.     expect {
  9.       \"yes/no\" {send \"yes\r\";exp_continue;}
  10.       \"word:\" {send \"$2\r\";}
  11.     }
  12.     expect \"# \" {send \"clear\r\";}
  13.     expect \"# \" {send \"date \\\"+%Y-%m-%d %H:%M:%S\\\"\r\";}
  14.     expect \"# \" {send \"sleep 2\r\";}
  15.     expect \"# \" {send \"date \\\"+%Y-%m-%d %H:%M:%S\\\"\r\";}
  16.     expect \"# \" {send \"sleep 2\r\";}
  17.     expect \"# \" {send \"date \\\"+%Y-%m-%d %H:%M:%S\\\"\r\";}
  18.     expect \"# \" {send \"sleep 2\r\";}
  19.     expect \"# \" {send \"date \\\"+%Y-%m-%d %H:%M:%S\\\"\r\";}
  20.     expect \"# \" {send \"exit\r\";}
  21.     interact"
  22. }

  23. login_exp $dip $pw
復制代碼

123.png (18.7 KB, 下載次數(shù): 141)

123.png

論壇徽章:
1
19周年集字徽章-19
日期:2019-08-22 08:47:17
3 [報告]
發(fā)表于 2019-08-20 17:35 |只看該作者
回復 2# jzsjm1002

謝謝解答,我主要的疑問是怎樣才能讓變量的值改變?還有個問題就是,我需要使用send執(zhí)行sed操作,把1.txt文檔中test123的行前插入#號,正常情況下執(zhí)行兩遍操作后文檔中的test123行前都會有#號,但實際情況是第一行有兩個#號,第二行沒有#號,還是變量的值不能改變的問題,這個問題要怎么解決呢?

操作:
send "sed -i ''$(cat -n 1.txt|grep -v "\#"|grep 'test123'|sed -n 1p|awk '{print $1}')'s/^/\#&/g' 1.txt\r"
send "sed -i ''$(cat -n 1.txt|grep -v "\#"|grep 'test123'|sed -n 1p|awk '{print $1}')'s/^/\#&/g' 1.txt\r"


1.txt文件內(nèi)容:
test123
test123

2.執(zhí)行后文件內(nèi)容:
##test123
test123




3.想要達到的效果:
#test123
#test123



論壇徽章:
0
4 [報告]
發(fā)表于 2019-08-20 17:50 |只看該作者
本帖最后由 jzsjm1002 于 2019-08-20 18:02 編輯
  1. sed -i "$(awk '/^test123/{print NR;exit}' file)s/^test123/#&/" file
復制代碼


有大批量的命令需要執(zhí)行 建議寫成腳本通過expect scp過去 然后在登錄執(zhí)行
因為轉(zhuǎn)義很麻煩

論壇徽章:
1
19周年集字徽章-19
日期:2019-08-22 08:47:17
5 [報告]
發(fā)表于 2019-08-20 17:55 |只看該作者
回復 4# jzsjm1002

謝謝解答,但還是想搞清楚,變量不能更新的原因,您了解是什么原因嗎?

論壇徽章:
0
6 [報告]
發(fā)表于 2019-08-20 18:06 |只看該作者
本帖最后由 jzsjm1002 于 2019-08-20 18:24 編輯

回復 5# mychnunixwebsit

不好意思 你是需要執(zhí)行兩次 依次進行修改對嗎 我改好了


123.png (10.71 KB, 下載次數(shù): 117)

123.png

論壇徽章:
1
19周年集字徽章-19
日期:2019-08-22 08:47:17
7 [報告]
發(fā)表于 2019-08-21 17:35 |只看該作者
回復 6# jzsjm1002
    不好意思,昨天系統(tǒng)限制要添加8個好友才能繼續(xù)發(fā)言,剛剛添加夠8個好友。    直接執(zhí)行是正常的,但是如果通過expect send發(fā)送,變量的值就不正常了,第二個變量的值跟第一個變量的值是一樣的。


論壇徽章:
1
19周年集字徽章-19
日期:2019-08-22 08:47:17
8 [報告]
發(fā)表于 2019-08-26 16:16 |只看該作者
本帖最后由 mychnunixwebsite 于 2019-08-26 16:36 編輯

找到原因了,還是轉(zhuǎn)義的問題。
    如果按照例1中的代碼執(zhí)行,send發(fā)送的是變量值(環(huán)境是shell腳本里嵌入expect),不是雙引號中間的字符串,所以看到的結(jié)果是變量的值是一樣的。
    按照例2中的代碼執(zhí)行,send發(fā)送的是字符串,字符竄在目標服務器上執(zhí)行,得到了預期的結(jié)果。
例1:
    send "echo $(date "+%Y-%m-%d %H:%M:%S")\r"
    sleep 2
    send "echo $(date "+%Y-%m-%d %H:%M:%S")\r"

例2:
    send "echo \\\$(date \"+%Y-%m-%d %H:%M:%S\")\r"
    sleep 2
    send "echo \\\$(date \"+%Y-%m-%d %H:%M:%S\")\r"

完整代碼:
#!/bin/bash

echo 'go'

echo 'run expect'

/usr/bin/expect>>log/log.log 2>&1<<EOF

    set timeout 5
    spawn ssh $3@$1 -p $2
    sleep 3

    send "$4\r"
    sleep 1

    send "su $5\r"
    sleep 1

    send "$6\r"
    sleep 1

    #send發(fā)送的是變量值
    send "echo $(date "+%Y-%m-%d %H:%M:%S")\r"
    sleep 2
    send "echo $(date "+%Y-%m-%d %H:%M:%S")\r"
    sleep 2

    #send發(fā)送的是字符串
    send "echo \\\$(date \"+%Y-%m-%d %H:%M:%S\")\r"
    sleep 2
    send "echo \\\$(date \"+%Y-%m-%d %H:%M:%S\")\r"
    sleep 2

    send "exit\r"

expect eof
EOF


echo 'over'



論壇徽章:
0
9 [報告]
發(fā)表于 2019-08-26 21:46 |只看該作者
回復 8# mychnunixwebsit

嗯 其實我已經(jīng)回復你了 但是回復內(nèi)容被論壇吞了 我以為和以前一樣 過幾天會返回出來的 但是沒有~

論壇徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亞冠之浦和紅鉆
日期:2015-06-23 19:10:532015亞冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16賽季CBA聯(lián)賽之山東
日期:2016-01-31 18:25:0515-16賽季CBA聯(lián)賽之四川
日期:2016-02-16 16:08:30程序設計版塊每日發(fā)帖之星
日期:2016-06-29 06:20:002017金雞報曉
日期:2017-01-10 15:19:5615-16賽季CBA聯(lián)賽之佛山
日期:2017-02-27 20:41:19
10 [報告]
發(fā)表于 2019-08-27 07:21 |只看該作者
  1. /usr/bin/expect>>log/log.log 2>&1<<\EOF

  2.     set timeout 5
  3.     spawn ssh $3@$1 -p $2
  4.     sleep 3

  5.     send "$4\r"
  6.     sleep 1

  7.     send "su $5\r"
  8.     sleep 1

  9.     send "$6\r"
  10.     sleep 1

  11.     send "echo $(date "+%Y-%m-%d %H:%M:%S")\r"
  12.     sleep 2

  13.     send "echo $(date "+%Y-%m-%d %H:%M:%S")\r"
  14.     sleep 2

  15.     send "date \"+%Y-%m-%d %H:%M:%S\"\r"
  16.     sleep 2

  17.     send "date \"+%Y-%m-%d %H:%M:%S\"\r"
  18.     sleep 2

  19.     send "exit\r"
  20.     send "exit\r"

  21. expect eof
  22. EOF
復制代碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP