自动登录网络设备刷配置脚本

#!/bin/bash
for p in 27 28;do
    for i in `seq 0 1 2`;do
        fping 172.${p}.${i}.1 > /dev/null
        sleep 1
        if [ $? -eq 0 ];then
            echo 172.${p}.${i}.1 >> online-ip.log
        else
            echo 172.${p}.${i}.1 >> offline-ip.log
        fi
    done
done
while read line;do
    expect /root/network/loginsw.exp $line
done < /root/network/online-ip.log
#!/bin/bash
for p in 27 28;do
        for i in `seq 0 1 1`;do
                fping 172.${p}.${i}.1 > /dev/null
                if [ $? -eq 0 ];then
                        expect /root/network/loginsw.exp 172.${p}.${i}.1 >expect.log
                        echo 172.${p}.${i}.1 >> online-ip.log
                else
                        echo 172.${p}.${i}.1 >> offline-ip.log
                fi
                usleep 500
        done
done
#while read line;do
#       expect /root/network/loginsw.exp $line
#$done < /root/network/online-ip.log

#!/usr/bin/expect 
set ipaddr [lrange $argv 0 0]
set timeout 5
spawn telnet $ipaddr
expect "Username:"
send "yiyatong\r"
expect "Password:"
send "Eternal@sz\r"
expect "*>"
send "enable\r"
expect "Password:"
send "002183Eter121\r"
expect "*#"
send "conf t\r"
expect "*(config)"
send "no ntp server 172.29.1.250\r"
send "ntp server 172.30.100.87 source f0/1\r"
expect "*marker.*"
send "ntp server 172.30.100.87 source g0/1\r"
send "end\r"
send "exit\r"
expect eof
#对接口的判断

 

注意事项:expect的脚本运行需./*exp运行

set ipaddr [lrange $argv 0 0]    的理解

注:$argv0是脚本名,$argc表示参数的个数
[lindex $argv n]用来接收输入的脚本参数,n从0开始,分别表示第一个,第二个,第三个....参数,
[lindex $argv 0]是第一个参数也可以用[lrange $argv 0 0]表示, [lindex $argv 1]或者[lrange $argv 1 1]都可以表示第二个参数, 以此类推
[lrange $argv 0 4]表示第一个参数到第五个参数
send_user 用来显示信息到父进程(一般为用户的shell)的标准输出。

 

转载于:https://www.cnblogs.com/lh438369/p/10579554.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我不是专业的程序员,但是我可以提供一个基本的思路,你可以根据需求进行修改。 1. 定义需要配置网络设备信息,例如IP地址、网关、子网掩码、DNS服务器等。 2. 使用Python的socket和telnetlib库连接到网络设备。 3. 在连接上的设备上执行命令,例如配置IP地址、网关等。 4. 使用Python的文件操作函数,将配置信息写入文件中,方便下次使用。 以下是一个简单的示例代码: ```python import socket import telnetlib # 定义网络设备信息 device_info = { "ip": "192.168.1.1", "username": "admin", "password": "password", "interface": "eth0", "ip_address": "192.168.1.2", "netmask": "255.255.255.0", "gateway": "192.168.1.1", "dns": ["8.8.8.8", "8.8.4.4"] } # 连接到网络设备 tn = telnetlib.Telnet(device_info["ip"]) tn.read_until(b"login: ") tn.write(device_info["username"].encode('ascii') + b"\n") tn.read_until(b"Password: ") tn.write(device_info["password"].encode('ascii') + b"\n") # 配置IP地址和网关 tn.write(b"ifconfig " + device_info["interface"].encode('ascii') + b" " + device_info["ip_address"].encode('ascii') + b" netmask " + device_info["netmask"].encode('ascii') + b"\n") tn.write(b"route add default gw " + device_info["gateway"].encode('ascii') + b"\n") # 配置DNS服务器 for dns in device_info["dns"]: tn.write(b"echo nameserver " + dns.encode('ascii') + b" >> /etc/resolv.conf\n") # 保存配置 tn.write(b"echo '# This is a generated configuration file.' > /etc/network/interfaces\n") tn.write(b"echo 'auto " + device_info["interface"].encode('ascii') + b"' >> /etc/network/interfaces\n") tn.write(b"echo 'iface " + device_info["interface"].encode('ascii') + b" inet static' >> /etc/network/interfaces\n") tn.write(b"echo 'address " + device_info["ip_address"].encode('ascii') + b"' >> /etc/network/interfaces\n") tn.write(b"echo 'netmask " + device_info["netmask"].encode('ascii') + b"' >> /etc/network/interfaces\n") tn.write(b"echo 'gateway " + device_info["gateway"].encode('ascii') + b"' >> /etc/network/interfaces\n") # 退出telnet会话 tn.write(b"exit\n") print(tn.read_all().decode('ascii')) # 保存配置到文件 with open("network_config.txt", "w") as f: f.write(str(device_info)) ``` 注意:上述代码仅供参考,具体的网络设备配置信息需要根据实际情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值