Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103121575
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-03-26 19:27:27

本工具用于从网络设备(CISCO)中提取配置文件,并保存到一个文本文件中。
需要 expect 软件支持, 如果你的操作系统没有这个软件,请根据需要下载 
在 sco unix 中,请到 中下载, 三个软件: expect , tcl, tk 并安装。 

主程序-----dome.sh
#!/bin/sh 

counter=0 

Usage() 

echo " 
Usage: $0 [iplist_filename] 
功能:本程序用于读网络设备的配置信息。 
参数: iplist_filename, 指定需要工作的网络设备文件。 
文件格式: 
节点编号 ip地址 Telnet密码 超级用户密码 节点设备说明 

如果没有定义iplist_filename, 缺省文件名为:iplist 
程序输入文件: iplist.out 或者 自定义文件名.out \n\n" 

exit 1 



[ $# -eq 0 ] && input="iplist" 
[ $# -eq 1 ] && input=$1 
[ $# -gt 1 ] && Usage 


output="$input.out" 
[ -r $input ] || { 
echo "Error: Can't open file:$input" 
exit 1 

echo "">$output 

lines=`wc -l $input|awk '{ print $1 }'

while read node host pass1 pass2 name 
do 
counter=`expr $counter + 1 ` 
echo "\nGet configure from [ $host ], Please wait...\t[$counter/$lines]\c">&2 
echo "============== begin ==============================\n">>$output 
echo "NODE=$node">>$output 
echo "NAME=$name">>$output 
./router.cmd $host $pass1 $pass2>>$output 
case $? in 
0) echo "\t----\c">&2; continue;; 
1) echo "\tE--- error \c">&2; continue;; 
2) echo "\t-E-- error \c">&2; continue;; 
3) echo "\t--E- error \c">&2; continue;; 
4) echo "\t---E error \c">&2; continue;; 
*) echo "\t**** error \c">&2; continue;; 
esac 
echo "-------------- end --------------------------------\n">>$output 
done<$input 

echo "\n===================\nCreate output file: $output">&2 

:em02: [b:7ce538da72]调用程序 router.cmd [/b:7ce538da72] 
#!/usr/local/bin/expect -- 
# 登陆路由器的一个命令 script for expact 
# 重要变量说明: 
# routerip=路由器telnet登陆ip地址 
# passwd1=路由器telnet登陆密码 
# passwd2=路由器超级用户密码 
# --------------------------------------------------- 
if $argc!=3 { 
send_user "Usage: router.cmd routerip passwd1 passwd2\n" 
exit 9 

set ROUTERIP [lindex $argv 0] 
set PASSWORD1 [lindex $argv 1] 
set PASSWORD2 [lindex $argv 2] 
set TIMEOUT 30 
set debug_flag 1 
send_user "##### BEGIN\n" 
spawn /usr/bin/telnet $ROUTERIP 23 

set timeout $TIMEOUT 
expect { 
timeout { 
send_user "Error 1: router ip can't arrived.\n" 
send_user "##### END\n\n" 
exit 1 

"refused" { 
send_user "Error 1: connection Failed.\n" 
send_user "##### END\n\n" 
exit 1 

"*assword: " { send "$PASSWORD1\r" } 


set timeout $TIMEOUT 
expect { 
timeout { 
send_user "\nError 2: invalid telnet password...\n" 
send_user "##### END\n\n" 
exit 2 

"*>" { send "enable\r" } 



set timeout $TIMEOUT 
expect { 
timeout { 
send_user "\nError 3: time out.\n" 
send_user "##### END\n\n" 
exit 3 

"Password: " { send "$PASSWORD2\r" } 



set timeout $TIMEOUT 
expect { 
timeout { 
send_user "\nError 4: Invalid password for super user...\n" 
send_user "##### END\n\n" 
exit 3 

"*#" { send "term len 0 \r" } 


expect "*#" 
send "show run\r" 
expect "*#" 
send "exit\r" 
send_user "\n##### END\n\n" 
exit 0 

=============以上程序已经在 Sco Unix OSR5 里面测试通过 
阅读(556) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~