linux腳本編程telnet
『壹』 linux,在shell腳本中實現用ssh或者telnet方式登錄另一個linux主機,然後修改第二個linux上的一個文件。
#!/usr/bin/expect-f
settimeout30
setipaddr"192.168.0.100"#IP地址
setusername"root"#用戶名
setpassword"password"#密碼
spawnssh$username@$ipaddr
expect{
"yes/no"{send"yes ";exp_continue}
"password:"{send"$password "}
}
expect"]#"#用戶的提示符,根據需要修改一下
send"ls "#執行的命令,換成自己修改文件的
send"exit "
expecteof
exit
『貳』 shell寫個linux腳本,功能是telnet某台伺服器,運行一個命令並把命令結果存到本地。
其實這種互動式的操作首選expect腳本。
Shell的話可以試試下面這樣:
#!/bin/ksh
(
telnet16.158.49.140<<!
root
oms
ls
!
)>OUTPUT
『叄』 如何實現linux的批處理telnet腳本
把ip地址保存為ip.txt
把cd /tksys/startup/
sed -i '/^ntpsvr=/ s/[^=]*$/'`sed -n '/^default=/ s/[^=]*=//p' network.cfg`'/' network.cfg 保存為2.txt
cat ip.txt |while read line ;do telnet $line user password<2.txt ;done
就這樣的思路 俺不懂沒測試過
『肆』 linux 中如何使用shell 腳本執行 telnet
登錄並備份到tftp的腳本是這個奶奶樣的:
#!/usr/bin/expect
spawn telnet 10.21.10.233
expect "*sername*"
send "admin\r"
expect "*asswor*"
send "******\r"
send "en\r"
expect "*assw*"
send "*******\r"
send " running-config startup-config\r"
expect "*estination filename*"
send "\r"
send " startup-config tftp:\r"
expect "*ddress or name of remote host*"
send "10.21.10.110\r"
expect "*estination filename*"
send [exec date +C2950_BJ95-20%y%m%d].config\r
sleep 10
send "exit\r"
send "\r"
『伍』 在linux系統上使用sh腳本 通過腳本telnet到另外一台AIX的伺服器上去執行一段命令並將結
大致思路是要用到expect工具,我理解aix上執行的一段命令是要放到後台
#!/bin/bash
/usr/bin/expect<<END
spawntelnetIP#IP是AIX的地址
expect"*login:"
send"user "#user是登錄用戶
expect"*assword:"
send"pass "#pass是用戶登錄口令
expect"*#"#我假設是root登錄,其shell提示符以#結尾
send"command>/tmp/a.txt& "#command是要後台執行的一段命令,注意有&符號
expect"*#"
send"whiletrue;doflag=$(cat/tmp/a.txt);if["$flag"="1"];thenbreak;fi;sleep300;done "
expect"*#"
send"exit "
expecteof
END
touch/tmp/final
上面是實現此效果的大致代碼,沒有測試過,可能會有些小問題,大致思路如此,希望對你有幫助。
『陸』 怎麼在LINUX里開啟telnet服務,使它可以遠程訪問管理伺服器
Telnet服務的配置步驟如下:
一、安裝telnet軟體包(通常要兩個)
1、 telnet-client (或 telnet),這個軟體包提供的是 telnet 客戶端程序;
2、 telnet-server ,這個軟體包提供的是 telnet 伺服器端程序;
安裝之前先檢測是否這些軟體包已安裝,方法如下:
[root@wljs root]#rpm _q telnet或[root@wljs root]#rpm _q telnet-client
[root@wljs root]#rpm _q telnet-server
如果沒有檢測到軟體包,需要進行安裝,red hat linux 9默認已安裝了telnet軟體包,一般只要安裝telnet-server軟體包。
1、在red hat linux 9的安裝盤中獲取telnet-server-0.17-25.i386.rpm軟體包。
2、安裝軟體包
[root@wljs root]#rpm _i telnet-server-0.17-25.i386.rpm
二、啟動telnet服務
1、開啟服務
方法一:使用ntsysv,在出現的窗口之中,將 telnet前面*加上,然後按下 OK 。
方法二:編輯 /etc/xinetd.d/telnet
[root@wljs root]# vi /etc/xinetd.d/telnet
找到 disable = yes 將 yes 改成 no 。
2、激活服務
[root@wljs root]# service xinetd restart
三、測試服務
[root@wljs root]#telnet ip(或者hostname)
如果配置正確,系統提示輸入遠程機器的用戶名和密碼
Login:
Password:
註:默認只允許普通用戶
四、設置telnet埠
#vi /etc/services
進入編輯模式後查找telnet(vi編輯方式下輸入/telnet)
會找到如下內容:
telnet 23/tcp
telnet 23/udp
將23修改成未使用的埠號(如:2000),退出vi,重啟telnet服務,telnet默認埠號就被修改了。
五、Telnet服務限制
telnet是明文傳送口令和數據的,如果你對其默認的設置不滿意,有必要對其服務范圍進行限制。假設你的主機的ip是210.45.160.17,就可以按如下方式設置了,^_^!
#vi /etc/xinetd.d/telnet
service telnet
{
disable = no #激活 telnet 服務,no
bind = 210.45.160.17 #your ip
only_from = 210.45.0.0/16 #只允許 210.45.0.0 ~ 210.45.255.255 這個網段進入
only_from = .e.cn #只有教育網才能進入!
no_access = 210.45.160.{115,116} #這兩個ip不可登陸
access_times= 8:00-12:00 20:00-23:59 # 每天只有這兩個時間段開放服務
......
}
六、Telnet root用戶的登入
telnet 不是很安全,默認的情況之下不允許 root 以 telnet 進入 Linux 主機 。若要允許root用戶登入,可用下列方法:
[root @wljs /root]# vi /etc/pam.d/login
#auth required pam_securetty.so #將這一行加上注釋!
或
[root@wljs root]# mv /etc/securetty /etc/securetty.bak
這樣, root 就可以直接進入 Linux 主機了。不過,建議不要這樣做。也可以在普通用戶進入後,切換到root用戶,擁有root的許可權。
『柒』 用expect實現telnet登陸到linux系統後,再執行一個shell腳本,待這個shell腳
參考一種類自然語言的腳本語言:
001 var {v_time} value datetime
002 screen.text at point {10} {30} string {2. telnet ipv4 (192.168.186.132:23) test , datetime: ~v_time~}
003
004 telnet.connect ip {192.168.186.132} port {23}
005 telnet.recv expect {Username:}
006 telnet.send {cisco%0a}
007 telnet.recv expect {Password}
008
009 telnet.send {cisco%0a}
010 telnet.recv expect {>}
011 telnet.send {enable%0a}
012 telnet.set onrecv {More} send { }
013 telnet.set delay {200} ms after per byte send
014 telnet.send {show version%0a}
015 telnet.recv for {5} seconds
016
017 telnet.send {show run%0a}
018 telnet.recv for {5} seconds
019 telnet.send {exit%0a}
020 telnet.close
021
022 var {v_time} value datetime
023 screen.text at point {10} {60} string {telnet tested end. datetime:~v_time~}
024
025 run.end
--------------------------------------------------------------------
簡單網路管理語言(Simple Network Management Language)是一種類自然語言的腳本語言,它採用snmp、telnet、ping、dns、arp、ssh、tcp、udp、web等協議訪問網路設備,內置smtp協議用於告警等郵件的發送,支持excel、mysql、sqlite等3種方式進行網管數據的存取。
最新版本: snml8.13(ladybird20200205) utf8&ipv6
項目託管地址:https://github.com/ladybirdSnml/snmlipv6utf8snmptelnetsshweb
打包下載:https://ladybirdsnml.github.io/snmlipv6utf8snmptelnetsshweb/snml_utf8ipv6.zip
『捌』 Linux如何通過腳本,不停地telnet一個IP,記錄telnet成功的時間並輸出
Telnet本身對另一台伺服器檢查時,容易退不出來。使用Nmap比較合適,然後寫個如下腳本,變更IP及相應的埠及Sleep的時間就可以達到目標。
如下參考:
#!/bin/bash
#Purpose:checkipport
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
exportPATH
#Checkifuserisroot
if[$(id-u)!="0"];then
echo"Error:Youmustberoottorunthisscript"
exit1
fi
Cur_Dir="$(cd-P"$(dirname"${BASHSOURCE[0]}")"&&pwd)"
Cur_Time="$(date+%Y%m%d%H%M%S)"
Dest_Ip=172.16.3.19
Dest_Port=22
if[!-f/usr/bin/nmap];then
yum-yinstallnmap
else
:
fi
functionCheck_Port(){
Port_State=$(nmap-P0-sS-p${Dest_Port}${Dest_Ip}|awk'/STATE/{getlinev;printv}'|awk'{print$2}')
if[X${Port_State}==X'open'];then
echo"${Dest_Ip}${Dest_Port}isopen">>${Cur_Dir}/status.txt
echo"${Cur_Time}">>${Cur_Dir}/status.txt
else
echo"${Dest_Ip}${Dest_Port}isfailure">>${Cur_Dir}/status.txt
echo"${Cur_Time}">>${Cur_Dir}/status.txt
fi
}
whiletrue;
do
Check_Port
sleep3
done
『玖』 Linux系統中如何用shell腳步判斷是否telnet成功。
1、連接上相應的linux主機,進入到等待輸入shell指令的linux命令行狀態下。