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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 6355 | 回復(fù): 8
打印 上一主題 下一主題

[文本處理] expect循環(huán)的問(wèn)題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2013-04-12 14:12 |只看該作者 |倒序?yàn)g覽
再shell中我可以把ip ,port 放在一個(gè)單獨(dú)文件中(file)
通過(guò) while read ip port ;do 。。。 ; done < file 的方式分別調(diào)用兩個(gè)賦值變量。
現(xiàn)在想通過(guò)expect的方式寫(xiě)。如何寫(xiě)?
網(wǎng)上的expect 循環(huán)范例似乎都很簡(jiǎn)單。求幫助

論壇徽章:
16
IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-10-02 06:20:00IT運(yùn)維版塊每月發(fā)帖之星
日期:2015-09-11 19:30:52IT運(yùn)維版塊每周發(fā)帖之星
日期:2015-09-11 19:20:31IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-08-26 06:20:00每日論壇發(fā)貼之星
日期:2015-08-20 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-08-20 06:20:002015年辭舊歲徽章
日期:2015-03-03 16:54:15金牛座
日期:2014-05-04 16:58:09雙子座
日期:2013-12-17 16:44:37辰龍
日期:2013-11-22 15:20:59獅子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26
2 [報(bào)告]
發(fā)表于 2013-04-12 14:23 |只看該作者
挖墳吧,能找到。CU搜索。

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2013-04-12 15:37 |只看該作者
回復(fù) 2# wenhq

我看了那些腳本都是一個(gè)參數(shù)。就ip。端口都是統(tǒng)一的。可是我的端口不是統(tǒng)一的。我的目的是講ip和port 都列在一個(gè)文件中,調(diào)用該文件的過(guò)程中,將ip和port的變量值對(duì)應(yīng)后,直接指定ssh ${ip} ${port}的方式 密碼也不是統(tǒng)一的。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2013-04-12 17:20 |只看該作者
你可以用shell 去封裝一層expect 來(lái)實(shí)現(xiàn)該需求  

[root@localhost shell]# cat ip
192.168.0.1
192.168.0.2
[root@localhost shell]# cat port
22
21
[root@localhost shell]# cat ssh.exp
#!/usr/bin/expect
set port [lindex $argv 0]
set server [lindex $argv 1]
puts "$port ====== $server"
exit 0
expect eof
[root@localhost shell]# cat test.sh
#!/bin/bash
port=(`cat port`)
ip=(`cat ip`)
tmp_key=${#port[*]}
key=`echo $(( ${tmp_key} -1 ))`
for num in `seq 0 ${key}`
do
        ./ssh.exp "${port[${num}]}"  "${ip[${num}]}"
done

[root@localhost shell]# ./test.sh
22 ====== 192.168.0.1
21 ====== 192.168.0.2


目前只想到這個(gè)辦法 。。希望大牛們批評(píng)教導(dǎo) 。。。





論壇徽章:
93
2015年辭舊歲徽章
日期:2019-10-10 10:51:15CU大;照
日期:2014-02-21 14:21:56CU十二周年紀(jì)念徽章
日期:2020-10-15 16:55:55CU大;照
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大;照
日期:2019-10-10 10:55:38季節(jié)之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季節(jié)之章:冬
日期:2019-10-10 10:57:17CU大;照
日期:2014-02-21 14:22:52CU大;照
日期:2014-03-13 10:40:30CU大;照
日期:2014-02-21 14:23:15
5 [報(bào)告]
發(fā)表于 2013-04-12 17:21 |只看該作者
假設(shè)文件內(nèi)容為 IP 端口,一行一對(duì),空格分隔?梢栽囋嚾缦麓a:

  1. #!/usr/bin/expect --

  2. set fid [open 文件名 r]
  3. while {[gets $fid line] >= 0} {
  4.     set ip   [lindex $line 0]
  5.     set port [lindex $line 1]
  6.    
  7.     puts "IP: $ip, Port: $port\n"
  8. }
  9. close $fid
復(fù)制代碼
未測(cè)試。

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2013-04-15 18:36 |只看該作者
回復(fù) 5# seesea2517


#!/usr/bin/expect --
set UPLOADADR /root/file
set FID [open ${UPLOADADR} r]
set FZIP [lindex $argv 0]

while { [gets $FID line] >= 0 } {
        set IP [lindex $line 0]
        set PORT [lindex $line 1]
        set PASSWD [lindex $line 2]
        puts "IP: $IP, Port $PORT, password $PASSWD"
        spawn ssh ${IP} -p ${PORT}
        expect "password: " { send "${PASSWD}\r" }
        expect "#" { send "sh ${UPLOADADR} ${FZIP}\r" }
        expect "ename: " { send "A\r" }
        sleep 2
}

嗯,按照你的嘗試過(guò)了沒(méi)有問(wèn)題。樓上的封裝,我還沒(méi)試過(guò),不過(guò)這個(gè)腳本 本來(lái)就要調(diào)用遠(yuǎn)程的shell腳本。這樣應(yīng)該足夠了                  

論壇徽章:
93
2015年辭舊歲徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年紀(jì)念徽章
日期:2020-10-15 16:55:55CU大;照
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季節(jié)之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季節(jié)之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大;照
日期:2014-02-21 14:23:15
7 [報(bào)告]
發(fā)表于 2013-04-16 09:16 |只看該作者
回復(fù) 6# onlinekof2001


    實(shí)現(xiàn)了就好。封閉一個(gè) expect 腳本后在 shell 里調(diào)用也是一種方案,我也有用過(guò),因?yàn)?expect 的語(yǔ)法我不是很熟悉,所以這樣的方案對(duì)于熟悉 shell,而只是略熟悉 expect 的情況下是很合適的。完全在 expect 下寫(xiě)則要比較熟悉 expect。

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2013-04-16 09:29 |只看該作者
非常感謝樓上兩位提供的思路以及實(shí)現(xiàn)方式。

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2013-04-21 18:40 |只看該作者
回復(fù) 1# onlinekof2001

i think you mean read file with tcl
cat 2.txt
192.168.1.1
8000
    #!/opt/cool/bin/expect
        if [catch {open 2.txt r} fd] {
        # open failed
        puts stderr "cannot open 2.txt"
        exit 1
        }
       set lineno 0
        while {[gets $fd line] >= 0} {
                incr lineno
                puts "$linenoline \n"
                foreach ln [split $line " "] {
                        puts "$linenoln \n"
                }
        }
        # close both files
        close $fd
       =========
cat 2.txt
192.168.1.1 80
       #!/opt/cool/bin/expect
        if [catch {open 1.txt r} fd] {
        # open failed
        puts stderr "cannot open 1.txt"
        exit 1
        }
        set lineno 0
        while {[gets $fd line] >= 0} {
        incr lineno
        puts "$linenoline \n"
        }
        # close both files
        close $fd
您需要登錄后才可以回帖 登錄 | 注冊(cè)

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP