青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Thronds

一問(wèn)你會(huì)什么 二問(wèn)你做出過(guò)什么 三問(wèn)你為了什么

  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  36 隨筆 :: 0 文章 :: 56 評(píng)論 :: 0 Trackbacks
在網(wǎng)上找到一篇文章,講在UNIX下自動(dòng)登錄telnet(http://www.linuxeden.com/forum/t138058.html。這個(gè)例子很不錯(cuò),下邊對(duì)其進(jìn)行分析。
#===========autotelnet.sh==============
#!/bin/bash

tmptty=`tty` #
取得當(dāng)前的tty
tmptty=`basename $tmptty` #去掉tty的絕對(duì)路徑
tmpname=`whoami` #取得當(dāng)前執(zhí)行程序的用戶名
ip="10.22.33.44" #目標(biāo)主機(jī)地址
inp1="ABC^M" #主機(jī)的用戶名,注意^M必須在UNIX下重裝用以下方法輸入才能用!!
#方法為按住ctrl鍵按v鍵,不放ctrl鍵,再按shift鍵和m鍵,完成后全部放開
inp2="ABC^M" #主機(jī)的密碼,注意必須有^M
inp3=
"ls^M" #其他進(jìn)入后的命令,可無(wú)或用ls之類的命令代替,注意必須有^M
inp4=
"pwd^M" #命令4,同上
#--------------------------

inputfile=in #
導(dǎo)入文件管道用的,不要改,這個(gè)值沒(méi)有任何關(guān)系
outputfile=out.log #最終導(dǎo)出的文件
rm -fr $inputfile
rm -fr $outputfile
mknod $inputfile p
touch $outputfile

#file de
scription 7 for out and 8 for in 使用7作為輸入管道,8作為輸入
exec 7<>$outputfile
exec 8<>$inputfile

telnet $ip <&8 >&7 &

sleep 2; echo $inp1 >> $inputfile #
看得懂吧
sleep 2; echo $inp2 >> $inputfile
sleep 2; echo $inp3 >> $inputfile #
如果沒(méi)有其他命令,這行和下一行可以去掉
sleep 2; echo $inp4 >> $inputfile

tail -f $outputfile &
強(qiáng)制在屏幕上顯示任何輸入輸出

while true #
正常情況下已經(jīng)進(jìn)入目標(biāo)主機(jī)了,可以輸入任何命令,所有的一切輸入輸出都會(huì)被記錄
do
read str
if [[ $str =
"quit" || $str = "exit" ]]
then echo $str >> $inputfile exit
else echo $str >> $inputfile
fi
done

#
退出時(shí)自動(dòng)殺掉相關(guān)進(jìn)程
ps -ef | grep telnet | grep -v grep | grep -v telnetd | grep $tmptty | grep $tmpname | awk '{print " kill -9", $2}' | sh
ps -ef | grep tail | grep -v grep | grep -v telnetd | grep $tmptty | grep $tmpname | awk
'{print " kill -9", $2}' | sh
這段代碼實(shí)現(xiàn)的功能是在UNIX系統(tǒng)上執(zhí)行這個(gè)腳本,自動(dòng)登錄到腳本中變量<ip>聲明使用的主機(jī)上,并用腳本中<inp1>變量和<inp2>的值分別作為用戶名和密碼進(jìn)行身份驗(yàn)證。然后,用戶可以在控制臺(tái)上輸入任何命令,這些命令會(huì)被發(fā)送到遠(yuǎn)端主機(jī)執(zhí)行。因此,我猜測(cè)這個(gè)腳本的作用和SecureCRT等TELNET工具提供的自動(dòng)登錄的功能是一樣的。
 
這個(gè)例子的主要原理是這樣的:用后臺(tái)方式啟動(dòng)一個(gè)telnet進(jìn)程。將這個(gè)進(jìn)程的輸入重定向到一個(gè)管道文件in,向這個(gè)管道文件追加要執(zhí)行的指令,也就是將指令傳送到telnet進(jìn)程中執(zhí)行;同時(shí),將這個(gè)進(jìn)程的輸出重定向至一個(gè)日志文件out.log中,tail –f這個(gè)日志文件,就是實(shí)時(shí)刷新telnet的輸出。
 
這里有幾個(gè)細(xì)節(jié)問(wèn)題需要說(shuō)明一下:
1、 向管道文件寫入要執(zhí)行的命令時(shí),必須有一個(gè)結(jié)束標(biāo)志,告訴telnet啟動(dòng)的shell進(jìn)程這是一個(gè)完整的命令,可以執(zhí)行了。這個(gè)結(jié)束標(biāo)志就是” ^M”。這個(gè)東西的輸入還很復(fù)雜。按照作者的說(shuō)明,要在UNIX系統(tǒng)上,按住Ctrl鍵后按v鍵,松開v鍵保持Ctrl鍵不放,然后按下Shift鍵后再按M鍵,然后同時(shí)放開Ctrl Shilf和M三個(gè)鍵。在實(shí)際使用中發(fā)現(xiàn),不需要Shift鍵,放開v鍵之后直接按m鍵即可;
2、 在重定向telnet后臺(tái)進(jìn)程的輸入時(shí),因?yàn)橐刂戚斎雰?nèi)容的速度(要等到出現(xiàn)login以后才能輸入用戶名),所以不能采用文件中直接保存用戶名、密碼及所有要執(zhí)行指令的方式,要求in文件是空的。
3、 在重定向telnet后臺(tái)進(jìn)程的輸入、輸出時(shí),必須使用文件描述符。具體原因還不清楚,但用文件名稱進(jìn)行重定向就不行; 
4、 在用戶輸入quit或exit后,需要退出后臺(tái)telnet進(jìn)程以及tail –f進(jìn)程。腳本中采用kill進(jìn)程的方式實(shí)現(xiàn)這一目標(biāo)。因?yàn)閗iill進(jìn)程時(shí)需要一些參數(shù),因此在腳本的開始處記錄了tty的類型等信息;
對(duì)于腳本中具體指令的解釋,參加如下列表中的注釋
#!/bin/bash

tmptty=`tty`   
#取得當(dāng)前的tty
tmptty=`basename $tmptty`  #去掉tty的絕對(duì)路徑
tmpname=`whoami`          #取得當(dāng)前執(zhí)行程序的用戶名
                         
#以上信息在最后kill進(jìn)程時(shí)作為篩選條件使用
ip="10.22.33.44"            #目標(biāo)主機(jī)地址
inp1="ABC^M"             #主機(jī)的用戶名。注意^M必須在UNIX下重裝用以下方法輸入才能用!!
                         
 #方法為按住ctrl鍵按v鍵,不放ctrl鍵,再按shift鍵和m鍵,完成后全部放開
                         
#經(jīng)過(guò)實(shí)際使用,不比按shilf鍵也可以
inp2="ABC^M"             #主機(jī)的密碼,注意必須有^M
inp3="ls^M"                 #其他進(jìn)入后的命令,可無(wú)或用ls之類的命令代替,注意必須有^M
inp4=
"pwd^M"               #命令4,同上
#--------------------------

inputfile=in                    #
將命令導(dǎo)入后臺(tái)telnet進(jìn)程用的管道文件名稱
outputfile=out.log               #包含telnet后臺(tái)進(jìn)程輸入的文件名稱
rm -fr $inputfile                
rm -fr $outputfile               
mknod $inputfile p              #
建立管道文件
touch $outputfile                #
建立輸出文件


exec 7<>$outputfile             #將文件描述符7分配給outputfile
exec 8<>$inputfile              #
將文件描述符8分配給inputfile

telnet $ip <&8 >&7 &            #
后臺(tái)運(yùn)行telent,同時(shí)重定向輸入、輸出

sleep 2; echo $inp1 >> $inputfile  #2
秒后輸入用戶名
sleep 2; echo $inp2 >> $inputfile   #2秒后輸入密碼
sleep 2; echo $inp3 >> $inputfile   #2
秒后輸入命令inp3
sleep 2; echo $inp4 >> $inputfile   #2秒后輸入命令inp3
                             
#這里面inp3inp4只是一個(gè)說(shuō)明,對(duì)自動(dòng)登錄實(shí)際上沒(méi)有什么作用
tail -f $outputfile &              強(qiáng)制在屏幕上顯示任何輸入輸出

while true        #
正常情況下已經(jīng)進(jìn)入目標(biāo)主機(jī)了,可以輸入任何命令,所有的一切輸入輸出都會(huì)被記錄
do
read str
if [[ $str =
"quit" || $str = "exit" ]]
then echo $str >> $inputfile exit   #
這里的exit實(shí)際上是從循環(huán)中退出
else echo $str >> $inputfile
fi
done

#
退出時(shí)自動(dòng)殺掉相關(guān)進(jìn)程
ps -ef | grep telnet | grep -v grep | grep -v telnetd | grep $tmptty | grep $tmpname | awk '{print " kill -9", $2}' | sh
ps -ef | grep tail | grep -v grep | grep -v telnetd | grep $tmptty | grep $tmpname | awk
'{print " kill -9", $2}' | sh
 
明白了這個(gè)腳本的原理,我們可以做一個(gè)試驗(yàn),用另外一種更加明顯的方式來(lái)做輸入輸出的重定向。
 
1、新建1個(gè)普通文件    touch out.log
2、新建一個(gè)管道文件:   mknod commands p
3、為日志文件分配文件描述符7 : exec 7<>out.log
4、為管道文件分配文件描述符8:   exec 8<>commands
5、后臺(tái)方式啟動(dòng)telnet:             telnet 136.30.75.102 <&8 >&7 &
6、實(shí)時(shí)刷新輸出信息:             tail –f out.log
7、另外啟動(dòng)一個(gè)終端,輸入信息: echo “root^M” >>commands
                                 echo “password^M”>>commands
                                 echo “pwd^M” >> commands
                                   ….
8、觀察tail –f的輸出,可以看到輸入命令的執(zhí)行結(jié)果。
 
 
在這個(gè)腳本的基礎(chǔ)上,可以實(shí)現(xiàn)自動(dòng)telnet到一個(gè)主機(jī)上并執(zhí)行一些列command的功能。腳本如下:
#!/bin/bash
 
tmptty=`tty`
tmptty=`basename $tmptty`
tmpname=`whoami`
ip="136.39.75.102"
inp1="root^M"
inp2="Easy2get^M"
#####################################################################
#you may add as many commands as you want
#NOTE:every command should end with ^M, which is input under UNIX
#     方法為按住ctrl鍵按v鍵,不放ctrl鍵,再按shift鍵和m鍵,完成后全部放開
#####################################################################
inp3="ls^M"
inp4="echo 'hello,TeMIP users' >> hello.txt^M"
 
#--------------------------
 
inputfile=in
outputfile=out.log
rm -fr $inputfile
rm -fr $outputfile
mknod $inputfile p
touch $outputfile
 
 
exec 7<>$outputfile
exec 8<>$inputfile
 
telnet $ip <&8 >&7 &
 
sleep 2; echo $inp1 >> $inputfile
sleep 2; echo $inp2 >> $inputfile
 
echo "executing command $inp3"
sleep 2; echo $inp3 >> $inputfile
echo "executing $inp4"
sleep 2; echo $inp4 >> $inputfile
echo "exiting"
sleep 2; echo "exit^M" >> $inputfile
 
 
rm $inputfile
rm $outputfile
 
附錄:Shell中的輸入/輸出
(摘自HP-UX 參考手冊(cè) 用戶命令 ksh)
命令執(zhí)行之前,其輸入和輸出可以使用專用表示法重定向由Shell 解釋。下列內(nèi)容可以出現(xiàn)在簡(jiǎn)單命令內(nèi)的任何位置,或在命令之前之后,并且不傳遞給調(diào)用命令。命令和參數(shù)替換發(fā)生在使用word 或digit 之前,除非如下所示。文件名生成僅出現(xiàn)在模式匹配單一文件且不執(zhí)行空白解釋時(shí)。
l         <word 使用文件word 作為標(biāo)準(zhǔn)輸入(文件描述符0 )。
l         >word 使用文件word 作為標(biāo)準(zhǔn)輸出(文件描述符1 )。如果不存在該文件,將另行創(chuàng)建。如果文件存在,并且使用noclobber 選項(xiàng),則發(fā)生錯(cuò)誤;否則文件被截?cái)酁榱汩L(zhǎng)度。
l         >|word 與> 相同,區(qū)別在于覆蓋noclobber 選項(xiàng)。
l         >>word 使用文件word 作為標(biāo)準(zhǔn)輸出。如果文件存在,追加輸出到其中(通過(guò)首先搜索文件末尾);否則,另行創(chuàng)建文件。
l         <>word 打開文件word 作為標(biāo)準(zhǔn)輸入以進(jìn)行讀取和寫入。如果不存在該文件,將另行創(chuàng)建。
l         <<[ - ]word 讀取Shell 輸入直至出現(xiàn)行與word 匹配,或者抵達(dá)文件末尾。在word 上沒(méi)有執(zhí)行參數(shù)替換、命令替換或文件名生成。得到的文檔稱為本文檔,作為標(biāo)準(zhǔn)輸入。如果引用word 的任意字符,不對(duì)文檔字符進(jìn)行解釋。否則,發(fā)生參數(shù)和命令替換,忽略\newline,必須使用\ 引用字符\ 、$ 、‘ 和word 的第一個(gè)字符。如果- 追加到<< ,則從word 和文檔去掉所有前導(dǎo)制表符。
l         <&digit 從文件描述符復(fù)制標(biāo)準(zhǔn)輸入digit (請(qǐng)參閱dup(2) )。
l         >&digit 標(biāo)準(zhǔn)輸出復(fù)制到文件描述符digit (請(qǐng)參閱dup(2) )。
l         <&- 標(biāo)準(zhǔn)輸入關(guān)閉。
l         >&- 標(biāo)準(zhǔn)輸出關(guān)閉。
l         <&p 來(lái)自聯(lián)合進(jìn)程的輸入移動(dòng)到標(biāo)準(zhǔn)輸入。
l         >&p 到聯(lián)合進(jìn)程去的輸出移動(dòng)到標(biāo)準(zhǔn)輸出。
如果上述一項(xiàng)有數(shù)字前導(dǎo),文件描述符號(hào)引用由該數(shù)字指定(取代缺省的0 或1 )。例如:
... 2>&1
意味著文件描述符2 打開,作為文件描述符1 的副本用于寫入。重定向順序很重要,因?yàn)镾hell 根據(jù)當(dāng)前打開文件在計(jì)算時(shí)與指定文件描述符的關(guān)聯(lián)計(jì)算重定向引用文件描述符。例如:
... 1>fname 2>&1
首先分配文件描述符1(標(biāo)準(zhǔn)輸出)給文件fname ,然后分配文件描述符2(標(biāo)準(zhǔn)錯(cuò)誤)給分配給文件描述符1的文件,也就是fname 。另一方面,如果重定向順序反轉(zhuǎn)如下:
... 2>&1 1>fname
文件描述符2 分配給當(dāng)前標(biāo)準(zhǔn)輸出,(用戶終端,除非繼承了不同的分配)。此時(shí)文件描述符1 重新分配給文件fname ,不更改文件描述符2 的分配。
co-process 的輸入和輸出可移動(dòng)到多個(gè)文件描述符,允許其他命令使用上述重定向運(yùn)算符向其中寫入和讀取。如果當(dāng)前co-process 輸入移動(dòng)到多個(gè)文件描述符,另一個(gè)co-process 開始。
如果命令后跟隨& 并且作業(yè)控制非活動(dòng)狀態(tài),命令的缺省標(biāo)準(zhǔn)輸入為空文件/dev/null 。否則,執(zhí)行命令的環(huán)境包括調(diào)用Shell 的文件描述符,通過(guò)輸入/輸出規(guī)格修改
http://blog.csdn.net/muyuqing/archive/2007/04/27/1586824.aspx
posted on 2009-04-18 21:18 thronds 閱讀(2242) 評(píng)論(4)  編輯 收藏 引用 所屬分類: Linux/Unix高級(jí)技術(shù)

評(píng)論

# re: zz自動(dòng)登錄telnet執(zhí)行若干command 2009-05-05 17:21 雅各布
telnet $ip <&8 >&7 &

為什么我的腳本在運(yùn)行時(shí),在該處都會(huì)告警
“getwinsize:ioctl: A specified file does not support the ioctl system call.”  回復(fù)  更多評(píng)論
  

# re: zz自動(dòng)登錄telnet執(zhí)行若干command 2009-05-05 17:22 雅各布
是不是權(quán)限的問(wèn)題??  回復(fù)  更多評(píng)論
  

# re: zz自動(dòng)登錄telnet執(zhí)行若干command 2010-08-08 01:25 BlevinsVicki
This is understandable that cash can make us free. But how to act if somebody does not have money? The one way is to try to get the <a href="http://bestfinance-blog.com/topics/credit-loans">credit loans</a> and just sba loan.   回復(fù)  更多評(píng)論
  

# re: zz自動(dòng)登錄telnet執(zhí)行若干command 2010-08-11 21:21 Custom thesis
You have to be really imaginative person to create this really hot dissertation writing just about this good topic . I like to buy essays and thesis about that stuff. Thanks a lot!   回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美黄色免费| 亚洲经典自拍| 亚洲国产精品999| 亚洲福利视频二区| 欧美1级日本1级| 久久综合狠狠综合久久综青草 | 亚洲综合日韩中文字幕v在线| 一级成人国产| 亚洲欧美在线一区二区| 久久久久国产一区二区| 欧美va亚洲va国产综合| 最近中文字幕mv在线一区二区三区四区| 亚洲福利精品| 中日韩美女免费视频网址在线观看 | 午夜精品网站| 亚洲图片在线观看| 欧美一区二区三区在线看| 久久字幕精品一区| 欧美日韩一区二区视频在线| 国产色综合网| 亚洲欧洲日产国码二区| 亚洲欧美韩国| 欧美激情一区二区三区在线视频观看 | 久久精品亚洲| 亚洲国产欧美一区| 亚洲欧美精品在线| 欧美国产日韩xxxxx| 国产欧美精品一区| av成人免费| 老色鬼精品视频在线观看播放| 亚洲免费成人av| 欧美伊人久久久久久久久影院| 欧美精品一区二区三区蜜桃| 黄色av成人| 欧美一区二区三区电影在线观看| 91久久国产自产拍夜夜嗨| 久久国产一区二区| 国产精品视频观看| 亚洲视频在线二区| 亚洲人永久免费| 久久一区国产| 一区二区三区我不卡| 欧美中文在线观看国产| 99热在线精品观看| 欧美~级网站不卡| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲老司机av| 老牛国产精品一区的观看方式| 国产精品视频观看| 香蕉免费一区二区三区在线观看| 亚洲蜜桃精久久久久久久| 欧美激情亚洲自拍| 亚洲欧洲一区二区三区| 欧美第一黄网免费网站| 久久综合亚州| 亚洲大胆人体在线| 亚洲成色最大综合在线| 久久亚洲欧洲| 亚洲精品在线一区二区| 亚洲国产一区二区三区a毛片| 久久精品国产亚洲aⅴ| 狠色狠色综合久久| 久久精品官网| 国产精品色婷婷久久58| 亚洲一区二区三区免费在线观看 | 国产精品久久久久av| 中文av一区特黄| 亚洲麻豆一区| 欧美日韩亚洲综合| 亚洲一区二区三区精品在线观看| 亚洲免费观看| 欧美视频不卡中文| 亚洲欧美激情视频| 亚洲欧美变态国产另类| 国产一区久久久| 老司机免费视频一区二区三区| 午夜视频一区| 欧美日韩精品一区二区三区四区 | 99pao成人国产永久免费视频| 亚洲经典视频在线观看| 欧美日韩一本到| 午夜亚洲视频| 久久国产毛片| 91久久精品国产91久久性色tv| 欧美激情视频一区二区三区在线播放| 老司机一区二区| 在线综合+亚洲+欧美中文字幕| 亚洲私人影院在线观看| 黄色小说综合网站| 91久久中文| 国产精品婷婷| 欧美电影免费观看高清完整版| 欧美片网站免费| 久久久xxx| 欧美福利一区| 久久久999精品免费| 久久久999国产| 欧美日韩国产另类不卡| 欧美中文日韩| 欧美精品自拍| 猛干欧美女孩| 国产精品国产精品国产专区不蜜| 久久黄色级2电影| 欧美精选午夜久久久乱码6080| 欧美一区二区三区在线观看视频 | 久久精品国产v日韩v亚洲 | 欧美日韩精品高清| 久久综合图片| 国产精品一区毛片| 亚洲福利在线观看| 国产午夜精品在线| 一本到12不卡视频在线dvd| 在线欧美不卡| 小辣椒精品导航| 亚洲先锋成人| 欧美金8天国| 欧美电影免费观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美三区在线视频| 欧美一区二粉嫩精品国产一线天| 亚洲一区二区免费视频| 国产欧美一区二区三区久久人妖 | 亚洲一区二区不卡免费| 欧美激情在线免费观看| 亚洲第一精品福利| 国产日韩欧美精品综合| 久久男人资源视频| 国产精品久线观看视频| 久久精品视频在线看| 一级成人国产| 久久视频一区二区| 黄色日韩网站视频| 9久re热视频在线精品| 欧美freesex8一10精品| 久久字幕精品一区| 狠狠色狠狠色综合日日五| 亚洲女性裸体视频| 欧美一区1区三区3区公司| 欧美午夜精品久久久| 亚洲免费激情| 国产精品99久久久久久白浆小说| 欧美精品v日韩精品v韩国精品v| 欧美看片网站| 欧美成人69av| 亚洲国产精品va在线观看黑人| 久久久久九九九九| 免费在线欧美视频| 亚洲国产老妈| 欧美国产日本| 这里只有精品在线播放| 欧美亚洲日本网站| 国产亚洲成av人片在线观看桃| 久久er99精品| 米奇777超碰欧美日韩亚洲| 亚洲国产影院| 欧美日韩国产综合在线| 亚洲一区二区三区在线看| 欧美中文在线字幕| 亚洲国产精品成人| 欧美日本亚洲视频| 午夜天堂精品久久久久| 欧美韩日亚洲| 亚洲欧美日本精品| 国产主播一区二区三区| 欧美成人第一页| 亚洲视频综合在线| 欧美 日韩 国产在线| 欧美黑人多人双交| 99riav1国产精品视频| 久久精品国产精品亚洲精品| 亚洲国产日韩欧美| 国产精品久久久久久户外露出| 久久久99国产精品免费| 99精品免费视频| 欧美成人免费小视频| 亚洲一区区二区| 亚洲国产91色在线| 国产精品高清一区二区三区| 美国成人毛片| 亚欧成人在线| 亚洲最新在线视频| 狂野欧美激情性xxxx| 亚洲欧美在线一区二区| 亚洲激情视频网站| 国内揄拍国内精品少妇国语| 欧美日韩一区二| 久久亚洲一区二区| 性欧美xxxx视频在线观看| 亚洲精品综合| 欧美激情一区二区三区成人| 久久国产精品久久久| 一区二区高清视频| 亚洲国产综合在线| 激情久久一区| 国产区精品在线观看| 国产精品第三页| 欧美日本免费一区二区三区| 欧美1区2区3区| 麻豆成人在线播放| 久久久蜜桃一区二区人|