用途
批量ping某网段内全部IP,然后输出arp table确认有哪些主机存活
工具
TeraTerm Mcaro
Python
方法
Python创建ping命令list
TTL逐行读取并实行,最终输出show arp部分的log
代码
※写在[ ]中的是可变量
python创建命令集
i = 2
filename = 'command.txt'
with open(filename,'a') as file_object:
while i < 255:
file_object.writelines("ping [前24位ip]" + str(i) + " routing-instance [名称] count 1 no-resolve rapid" + "\n")
i = i + 1
※对于/24以外的网段,需要修改i的初始和最终值
TTL
;定数
HOSTADDR = '[网关IP]'
USERNAME = '[用户ID]'
PORTNUM = '22'
;RTにログイン
msg = 'Enter password for user '
strconcat msg USERNAME
passwordbox msg 'Get password'
strconcat HOSTADDR ':portnum /ssh /auth=password /user='
strconcat HOSTADDR username
strconcat HOSTADDR ' /passwd='
strconcat HOSTADDR inputstr
connect HOSTADDR
;ログイン遅いから待つ
pause 10
;ファイル読み込み&実行
fileopen FH 'C:\Users\aaa\Desktop\command.txt' 0
sendln 'ping [网段最初的IP] routing-instance [名称] count 1'
:loopstart
filereadln FH line
if result<>0 then
goto loopend
else
wait '1 packets transmitted'
sendln line
goto loopstart
endif
:loopend
fileclose FH
;arpログ出力
wait '[网段最后的IP] ping statistics'
logopen 'C:\Users\aaa\Desktop\log.txt' 0 0
sendln 'show arp interface [接口名]|no-more'
pause 1
;arp命令不显示自身mac与ip所以
sendln 'show interface [接口名]|no-more'
pause 1
logclose
closett
messagebox 'Successfully Completed' 'Hey'
end
关于TTL的一点解说
都是自己纠结过的地方。。
- result在每个命令中代表不同的含义,并且都在reference中有注明,每次使用时都需要确认。0 1等数字同理
- 语法中的filehandle是“代表整个文件”的变量,相当于在fileopen命令中给某个文件赋予一个标签,起什么名儿无所谓,自己好懂也方便书写即可,后续读取写入等操作都需要用这个标签来识别文件
- 善用wait和pause,不然你的机器反应速度很可能跟不上程序运行速度。。。就会出现一些很魔幻的现象
おわりに
其实自己也觉得实现的方法很蠢了。。
只有一下午的时间来写
大部分都在读TTL的reference
(中间还开了两小时不知所云的会)
(而且TTL是真的傻白甜。。。)
尽力了。。。
不过从构思到完成的过程是真的很有意思呀( ' v ' )