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

Thronds

一問你會什么 二問你做出過什么 三問你為了什么

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

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

inputfile=in #
導入文件管道用的,不要改,這個值沒有任何關系
outputfile=out.log #最終導出的文件
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 #
如果沒有其他命令,這行和下一行可以去掉
sleep 2; echo $inp4 >> $inputfile

tail -f $outputfile &
強制在屏幕上顯示任何輸入輸出

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

#
退出時自動殺掉相關進程
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
這段代碼實現的功能是在UNIX系統上執行這個腳本,自動登錄到腳本中變量<ip>聲明使用的主機上,并用腳本中<inp1>變量和<inp2>的值分別作為用戶名和密碼進行身份驗證。然后,用戶可以在控制臺上輸入任何命令,這些命令會被發送到遠端主機執行。因此,我猜測這個腳本的作用和SecureCRT等TELNET工具提供的自動登錄的功能是一樣的。
 
這個例子的主要原理是這樣的:用后臺方式啟動一個telnet進程。將這個進程的輸入重定向到一個管道文件in,向這個管道文件追加要執行的指令,也就是將指令傳送到telnet進程中執行;同時,將這個進程的輸出重定向至一個日志文件out.log中,tail –f這個日志文件,就是實時刷新telnet的輸出。
 
這里有幾個細節問題需要說明一下:
1、 向管道文件寫入要執行的命令時,必須有一個結束標志,告訴telnet啟動的shell進程這是一個完整的命令,可以執行了。這個結束標志就是” ^M”。這個東西的輸入還很復雜。按照作者的說明,要在UNIX系統上,按住Ctrl鍵后按v鍵,松開v鍵保持Ctrl鍵不放,然后按下Shift鍵后再按M鍵,然后同時放開Ctrl Shilf和M三個鍵。在實際使用中發現,不需要Shift鍵,放開v鍵之后直接按m鍵即可;
2、 在重定向telnet后臺進程的輸入時,因為要控制輸入內容的速度(要等到出現login以后才能輸入用戶名),所以不能采用文件中直接保存用戶名、密碼及所有要執行指令的方式,要求in文件是空的。
3、 在重定向telnet后臺進程的輸入、輸出時,必須使用文件描述符。具體原因還不清楚,但用文件名稱進行重定向就不行; 
4、 在用戶輸入quit或exit后,需要退出后臺telnet進程以及tail –f進程。腳本中采用kill進程的方式實現這一目標。因為kiill進程時需要一些參數,因此在腳本的開始處記錄了tty的類型等信息;
對于腳本中具體指令的解釋,參加如下列表中的注釋
#!/bin/bash

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

inputfile=in                    #
將命令導入后臺telnet進程用的管道文件名稱
outputfile=out.log               #包含telnet后臺進程輸入的文件名稱
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 &            #
后臺運行telent,同時重定向輸入、輸出

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只是一個說明,對自動登錄實際上沒有什么作用
tail -f $outputfile &              強制在屏幕上顯示任何輸入輸出

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

#
退出時自動殺掉相關進程
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
 
明白了這個腳本的原理,我們可以做一個試驗,用另外一種更加明顯的方式來做輸入輸出的重定向。
 
1、新建1個普通文件    touch out.log
2、新建一個管道文件:   mknod commands p
3、為日志文件分配文件描述符7 : exec 7<>out.log
4、為管道文件分配文件描述符8:   exec 8<>commands
5、后臺方式啟動telnet:             telnet 136.30.75.102 <&8 >&7 &
6、實時刷新輸出信息:             tail –f out.log
7、另外啟動一個終端,輸入信息: echo “root^M” >>commands
                                 echo “password^M”>>commands
                                 echo “pwd^M” >> commands
                                   ….
8、觀察tail –f的輸出,可以看到輸入命令的執行結果。
 
 
在這個腳本的基礎上,可以實現自動telnet到一個主機上并執行一些列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 參考手冊 用戶命令 ksh)
命令執行之前,其輸入和輸出可以使用專用表示法重定向由Shell 解釋。下列內容可以出現在簡單命令內的任何位置,或在命令之前之后,并且不傳遞給調用命令。命令和參數替換發生在使用word 或digit 之前,除非如下所示。文件名生成僅出現在模式匹配單一文件且不執行空白解釋時。
l         <word 使用文件word 作為標準輸入(文件描述符0 )。
l         >word 使用文件word 作為標準輸出(文件描述符1 )。如果不存在該文件,將另行創建。如果文件存在,并且使用noclobber 選項,則發生錯誤;否則文件被截斷為零長度。
l         >|word 與> 相同,區別在于覆蓋noclobber 選項。
l         >>word 使用文件word 作為標準輸出。如果文件存在,追加輸出到其中(通過首先搜索文件末尾);否則,另行創建文件。
l         <>word 打開文件word 作為標準輸入以進行讀取和寫入。如果不存在該文件,將另行創建。
l         <<[ - ]word 讀取Shell 輸入直至出現行與word 匹配,或者抵達文件末尾。在word 上沒有執行參數替換、命令替換或文件名生成。得到的文檔稱為本文檔,作為標準輸入。如果引用word 的任意字符,不對文檔字符進行解釋。否則,發生參數和命令替換,忽略\newline,必須使用\ 引用字符\ 、$ 、‘ 和word 的第一個字符。如果- 追加到<< ,則從word 和文檔去掉所有前導制表符。
l         <&digit 從文件描述符復制標準輸入digit (請參閱dup(2) )。
l         >&digit 標準輸出復制到文件描述符digit (請參閱dup(2) )。
l         <&- 標準輸入關閉。
l         >&- 標準輸出關閉。
l         <&p 來自聯合進程的輸入移動到標準輸入。
l         >&p 到聯合進程去的輸出移動到標準輸出。
如果上述一項有數字前導,文件描述符號引用由該數字指定(取代缺省的0 或1 )。例如:
... 2>&1
意味著文件描述符2 打開,作為文件描述符1 的副本用于寫入。重定向順序很重要,因為Shell 根據當前打開文件在計算時與指定文件描述符的關聯計算重定向引用文件描述符。例如:
... 1>fname 2>&1
首先分配文件描述符1(標準輸出)給文件fname ,然后分配文件描述符2(標準錯誤)給分配給文件描述符1的文件,也就是fname 。另一方面,如果重定向順序反轉如下:
... 2>&1 1>fname
文件描述符2 分配給當前標準輸出,(用戶終端,除非繼承了不同的分配)。此時文件描述符1 重新分配給文件fname ,不更改文件描述符2 的分配。
co-process 的輸入和輸出可移動到多個文件描述符,允許其他命令使用上述重定向運算符向其中寫入和讀取。如果當前co-process 輸入移動到多個文件描述符,另一個co-process 開始。
如果命令后跟隨& 并且作業控制非活動狀態,命令的缺省標準輸入為空文件/dev/null 。否則,執行命令的環境包括調用Shell 的文件描述符,通過輸入/輸出規格修改
http://blog.csdn.net/muyuqing/archive/2007/04/27/1586824.aspx
posted on 2009-04-18 21:18 thronds 閱讀(2236) 評論(4)  編輯 收藏 引用 所屬分類: Linux/Unix高級技術

評論

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

為什么我的腳本在運行時,在該處都會告警
“getwinsize:ioctl: A specified file does not support the ioctl system call.”  回復  更多評論
  

# re: zz自動登錄telnet執行若干command 2009-05-05 17:22 雅各布
是不是權限的問題??  回復  更多評論
  

# re: zz自動登錄telnet執行若干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.   回復  更多評論
  

# re: zz自動登錄telnet執行若干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!   回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧美日韩第一区| 久久99伊人| 国产一区二区高清不卡| 国产精品白丝av嫩草影院| 欧美精品网站| 国产精品久久久久久亚洲毛片 | 黄色成人av| 亚洲激情电影在线| 一本色道久久综合亚洲精品婷婷| 亚洲一区日韩在线| 久久免费黄色| 91久久精品网| 亚洲图片欧美日产| 久久九九国产精品怡红院| 免费在线观看日韩欧美| 欧美日韩在线精品| 黄网动漫久久久| 亚洲综合日韩| 欧美激情第六页| 亚洲欧美不卡| 欧美精品在欧美一区二区少妇| 国产美女搞久久| 亚洲日本成人| 久久久久五月天| 99国产精品久久久久久久久久 | 国产亚洲福利| 99人久久精品视频最新地址| 久久大香伊蕉在人线观看热2| 狠狠色综合播放一区二区| 亚洲黑丝一区二区| 久久成人一区二区| 亚洲精品自在久久| 久久久久久综合| 国产精品一区二区欧美| av成人老司机| 亚洲成色777777女色窝| 久久成人精品视频| 国产精品免费区二区三区观看| 亚洲精品免费看| 欧美成人精品1314www| 欧美亚洲视频| 国产精品一区二区三区成人| 一区二区精品在线| 亚洲欧洲在线一区| 欧美aⅴ一区二区三区视频| 韩国女主播一区| 久久九九久精品国产免费直播| 亚洲图片欧洲图片日韩av| 欧美高清在线播放| 亚洲日本欧美日韩高观看| 免费在线看一区| 久久久久五月天| 在线 亚洲欧美在线综合一区| 欧美在线观看天堂一区二区三区| 亚洲午夜精品久久| 国产精品久久久久久久久久三级 | 欧美在线看片a免费观看| 日韩视频永久免费观看| 欧美 日韩 国产 一区| 亚洲国产成人精品久久久国产成人一区 | 久久综合五月| 久久福利精品| 影音先锋中文字幕一区二区| 久久久一区二区三区| 久久精品国产99精品国产亚洲性色| 国产日韩欧美亚洲| 久久躁日日躁aaaaxxxx| 久久综合给合久久狠狠狠97色69| 在线看不卡av| 亚洲激情视频网站| 欧美日韩国产综合网| 亚洲一区二区在线看| 亚洲欧美国产日韩中文字幕| 国产亚洲免费的视频看| 米奇777在线欧美播放| 欧美freesex8一10精品| 一区二区三区欧美亚洲| 亚洲尤物在线| 在线免费观看日本欧美| 亚洲人成艺术| 国产欧美日本在线| 欧美国产精品久久| 国产精品国产一区二区 | 日韩午夜剧场| 在线一区二区三区四区| 国产亚洲欧美一区二区| 欧美凹凸一区二区三区视频| 欧美精品一区二区三区在线播放| 午夜精品久久久久久久久| 欧美在线999| 99综合精品| 欧美影院在线| 亚洲图片自拍偷拍| 久久久久久久久蜜桃| 一级日韩一区在线观看| 欧美一区二区三区免费在线看 | 老司机精品久久| 亚洲五月婷婷| 久久久久久欧美| 亚洲综合视频一区| 免费成人小视频| 欧美一区二区久久久| 欧美成人精品福利| 久久精品国产99国产精品| 欧美金8天国| 久久一区国产| 国产伦精品一区二区三区高清| 亚洲国产精品一区二区第一页 | 欧美在线综合视频| 亚洲在线视频| 欧美日韩大片| 亚洲二区在线视频| 国产一区二区中文| 亚洲一区二区不卡免费| 亚洲精品视频在线| 久久久亚洲影院你懂的| 亚洲欧美日韩精品久久久久| 欧美18av| 欧美激情视频在线播放 | 国内精品免费在线观看| 亚洲一区二区三区在线观看视频| 亚洲九九精品| 欧美激情精品久久久久久蜜臀 | 欧美成人激情视频| 麻豆视频一区二区| 极品尤物久久久av免费看| 亚洲四色影视在线观看| 一区二区三区你懂的| 欧美另类一区| 亚洲精品在线一区二区| 夜夜夜久久久| 欧美日韩一区二区免费在线观看| 欧美寡妇偷汉性猛交| 亚洲第一视频网站| 久久夜色精品国产亚洲aⅴ| 鲁大师影院一区二区三区| 激情小说另类小说亚洲欧美| 久久乐国产精品| 亚洲黄色毛片| 国产伦精品一区二区三| 亚洲综合第一| 久久精品亚洲国产奇米99| 国产亚洲精品久久久久久| 久久成人资源| 欧美国产日本高清在线| 亚洲免费不卡| 国产精品欧美一区二区三区奶水| 午夜精品www| 免费av成人在线| 亚洲精品乱码久久久久久久久| 欧美精品一区二区视频| 亚洲图片欧洲图片日韩av| 久久精品国产清高在天天线| 红桃视频一区| 欧美日产国产成人免费图片| 亚洲午夜91| 欧美成人亚洲成人| 亚洲午夜精品一区二区三区他趣| 国产精品久久久久久久久久ktv| 亚洲欧美日韩精品在线| 玖玖玖国产精品| 99精品欧美一区二区三区综合在线| 国产精品video| 久久久久久久波多野高潮日日| 亚洲大胆视频| 亚洲欧美国产毛片在线| 激情文学综合丁香| 国产精品v欧美精品∨日韩| 欧美在线视频免费播放| 亚洲欧洲中文日韩久久av乱码| 欧美一区1区三区3区公司| 亚洲国产电影| 国产农村妇女精品一二区| 开元免费观看欧美电视剧网站| 9久re热视频在线精品| 久久久国产成人精品| 在线一区二区三区四区五区| 国语精品中文字幕| 国产精品v片在线观看不卡| 久久久女女女女999久久| 一区二区电影免费在线观看| 欧美 日韩 国产 一区| 欧美亚洲免费在线| av成人免费在线观看| 一区免费视频| 国产亚洲午夜高清国产拍精品| 欧美日韩高清区| 欧美成人国产va精品日本一级| 欧美一区二区高清在线观看| 99精品久久免费看蜜臀剧情介绍| 欧美成人dvd在线视频| 久久精品一区| 久久超碰97中文字幕| 亚洲女ⅴideoshd黑人| 99视频一区| 日韩一级免费| 亚洲人成7777| 最新国产成人在线观看| 悠悠资源网亚洲青| 国产在线成人|