TFTP
TFTP(Trivial File Transfer Protocol,简单文件传输协议)也是用于在远端服务器和本地主机之间传输文件的,相对于FTP,TFTP没有复杂的交互存取接口和认证控制,适用于客户端和服务器之间不需要复杂交互的环境。TFTP协议的运行基于UDP协议,UDP 69 端口,使用UDP端口建立连接、收/发数据报文。
TFTP协议传输是由客户端发起的:
·当TFTP客户端需要从服务器下载文件时,由客户端向TFTP服务器发送读请求包,然后从服务器接收数据,并向服务器发送确认;
·当TFTP客户端需要向服务器上传文件时,由客户端向TFTP服务器发送写请求包,然后向服务器发送数据文档网络设置在哪,并接收服务器的确认。
TFTP传输文件有两种模式:
·二进制模式,用于传输程序文件(比如后缀名为.bin和.btm的文件)。
·ASCII码模式,用于传输文本格式的文件(比如后缀名为.txt、.bat和.cfg的文件)。
安装TFTPServer
yum -y install tftp-server xinetd
TFTP Server 配置文件
cat /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s -c /mnt/backup
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
创建 TFTP 存储目录赋予权限
mkdir -p /mnt/backup
chmod 777 -R /mnt/backup/
重启 xinetd 服务 (tftp服务是依赖于xinetd服务)
systemctl restart xinetd
查看TFTP 服务端口
netstat -auntlp |grep 69
udp 0 0 0.0.0.0:69 0.0.0.0:* 20046/xinetd
udp6 0 0 :::69 :::* 1/systemd
Firewall 配置
firewall-cmd --add-port=69/udp --permanent
firewall-cmd --reload
登录网络设备测试推送配置文件到TFTP 服务器(H3C 设备为例)
TFTP 服务器查看设备备份文件
bash 脚本一
案例中使用 telnet 协议,生产环境多为ssh协议,根据实际环境修改脚本。
cat expect06.sh
date=`date +%F`
cat /mnt/shell/ip.txt | while read ip username password
do
ping -c1 -W1 $ip &>/dev/null
if [ $? -eq 0 ];then
/usr/bin/expect <<-EOF
set timeout 10
spawn telnet $ip
expect "Username:" { send "$usernamen" }
expect "Password:" { send "$passwordn" }
expect ">" { send "tftp 172.18.30.27 put startup.cfg startup.cfg_${date}_$ipn" }
expect ">" { send "quitn" }
expect eof
EOF
else
echo -e "e[1;33m$ip ICMP Ping Unavailable...e[0m"
fi
done
赋予可执行权限
chmod a+x expect06.sh
文本文件内容
cat ip.txt
172.18.1.30 username password
172.18.1.14 username password
网络设备备份配置文件
bash 脚本二
将网络设备备份状态重定向到文本文件
cat expect07.sh
date=`date +%F`
cat /mnt/shell/ip.txt | while read ip username password
do
ping -c1 -W1 $ip &>/dev/null
if [ $? -eq 0 ];then
/usr/bin/expect <<-EOF
set timeout 5
spawn telnet $ip
expect "Username:" { send "$usernamen" }
expect "Password:" { send "$passwordn" }
expect ">" { send "tftp 172.18.30.27 put startup.cfg startup.cfg_${date}_$ipn" }
expect ">" { send "quitn" }
expect eof
EOF
else
echo -e "e[1;33m$ip ICMP Ping Unavailable...e[0m"
fi
if [ -e /mnt/backup/startup.cfg_${date}_$ip ];then
echo "$date $ip success" >>/mnt/shell/device.txt
else
echo "$date $ip failed" >>/mnt/shell/device.txt
fi
done
赋予可执行权限
chmod a+x expect07.sh
文本文件内容
cat ip.txt
172.18.1.30 username password
172.18.1.14 username password
172.18.1.114 username password
设备备份状态
cat device.txt
2020-12-15 172.18.1.13 success
2020-12-15 172.18.1.14 success
2020-12-15 172.18.1.114 failed
Zabbix 实现对网络设备备份状态监控
zabbix_sender 参数介绍
-c –config配置文件绝对路径
-z –zabbix-server zabbix server的IP地址
-p –port zabbix server端口.默认10051
-s –host主机名,zabbix里面配置的主机名(不是服务器的hostname),不能使用ip地址
-I –source-address源IP
-k –key监控项的key
-o –value key值
-i –input-file从文件里面读取hostname、key、value一行为一条数据,使用空格作为分隔符,如果主机名带空格文档网络设置在哪,那么请使用双引号包起来
-T –with-timestamps一行一条数据,空格作为分隔符:,配合–input-file option,timestamp为unix时间戳
-r –real-time将数据实时提交给服务器
-v –verbose详细模式, -vv更详细
监控项
注意:后续需要根据设备IP地址新增监控项,保证监控项键值和主机的IP地址对应!!!
zabbix_sender 发送数据测试
zabbix_sender -z 172.18.30.27 -s Zabbix-server -k "172.18.1.30" -o sucess -vv
zabbix_sender [25857]: DEBUG: answer [{"response":"success","info":"processed: 1; failed: 0; total: 1; seconds spent: 0.000083"}]
Response from "172.18.30.27:10051": "processed: 1; failed: 0; total: 1; seconds spent: 0.000083"
sent: 1; skipped: 0; total: 1
最新数据
zabbix_sender 读取文件
zabbix_sender -z 172.18.30.27 -i device.txt
Response from "172.18.30.27:10051": "processed: 2; failed: 0; total: 2; seconds spent: 0.000095"
sent: 2; skipped: 0; total: 2
文本文件内容
cat device.txt
Zabbix-server 172.18.1.30 success
Zabbix-server 172.18.1.114 failed
最新数据
bash 脚本三
cat expect08.sh
>/mnt/shell/device.txt
date=`date +%F`
host="Zabbix-server"
cat /mnt/shell/ip.txt | while read ip username password
do
ping -c1 -W1 $ip &>/dev/null
if [ $? -eq 0 ];then
/usr/bin/expect <<-EOF
set timeout 5
spawn telnet $ip
expect "Username:" { send "$usernamen" }
expect "Password:" { send "$passwordn" }
expect ">" { send "tftp 172.18.30.27 put startup.cfg startup.cfg_${date}_$ipn" }
expect ">" { send "quitn" }
expect eof
EOF
else
echo -e "e[1;33m$ip ICMP Ping Unavailable...e[0m"
fi
if [ -e /mnt/backup/startup.cfg_${date}_$ip ];then
echo "$host $ip success" >>/mnt/shell/device.txt
else
echo "$host $ip failed" >>/mnt/shell/device.txt
fi
done
/usr/bin/zabbix_sender -z 172.18.30.27 -i device.txt
赋予可执行权限
chmod a+x expect08.sh
文本文件内容
cat ip.txt
172.18.1.30 username password
172.18.1.114 username password
设备备份状态
cat device.txt
Zabbix-server 172.18.1.30 success
Zabbix-server 172.18.1.114 failed
Zabbix 最新数据
——END——
———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击网站首页每天更新
站 长 微 信: aiwo51889