Linux下实现自动登录网络设备,免账号密码登录
文章目录
- 前言
- 一、实现原理
- 二、使用步骤
- 1.shell脚本
- 2.exp脚本
- 3.设备信息
- 总结
前言
作为网络运维人员,通常需要管理几百台,甚至是上千台设备,经常需要登录设备做一些命令查询或者配置的操作,往往需要准备设备IP,账号,密码,每次登录工作繁琐,为了实现快速登录设备,所以编写了此shell脚本,通过事先预置设备信息,然后执行脚本,实现一键式登录,方便运维,提高工作效率。
一、实现原理
事先预置设备信息(关键参数:IP,账号,密码),并借助expect自动化交互套件,可以将ssh登录交互过程自动化完成。
二、使用步骤
使用方法:loginDevice.sh、loginDevice.exp、deviceinfo.txt,共3个文件放在同一目录下
注意事项:脚本需要expect环境支持
1.shell脚本
文件名:loginDevice.sh
#!/bin/bash
# -------------------------------------------------------------------------------
# Name:loginDevice.sh
# Author: wenhui.Cheng
# Description: 通过设备IP,或者检索的方法实现自动登录
# Version: v2.0
# Date: 2022-10-10
# -------------------------------------------------------------------------------# 使用方法:loginDevice.sh、loginDevice.exp、deviceinfo.txt,共3个文件放在同一目录下
# 注意事项:脚本需要expect环境支持echo "┌──────────────────────────────────────────────────────────────────────┐│ ∙ Linux下自动登录网络设备 ∙ ││ (A tool for automatic device login) ││ ││ ∙ Description : 通过设备IP,或者检索的方法实现自动登录 ││ ∙ Author : wenhui.Cheng ││ ∙ E-Mail : 756942988@qq.com ││ ∙ Version : v2.0 ││ │└──────────────────────────────────────────────────────────────────────┘
"
curdir=$(cd `dirname $0`; pwd)
cd $curdirread -p "请输入【设备IP】或者【设备名称】,设备名称支持模糊查询(输入Q退出):" parameter1
if [[ $parameter1 = Q ]] || [[ $parameter1 = q ]]; thenexit 0
elseif ! echo $parameter1 | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}.[0-9]\{1,3\}\.[0-9]\{1,3\}' ;then # 如果输入的参数不是IP,则# 根据输入的参数,检索满足条件的数据,显示前8列,左对齐:column -tgrep -e 设备名称 -e $parameter1 deviceinfo.txt |awk '{for(i = 1; i <= 8; i++) printf("%s ", $i); printf("\n")}'| column -tread -p "请输入设备编号(输入Q退出):" parameter2 # 继续输入参数,锁定唯一设备if [[ $parameter2 = Q ]] || [[ $parameter2 = q ]]; thenexit 0elseIP=`grep -E 【$parameter2】 deviceinfo.txt | awk '{print $5}'` # LoginModel=`grep -E 【$parameter2】 deviceinfo.txt | awk '{print $8}'`UserName=`grep -E 【$parameter2】 deviceinfo.txt | awk '{print $10}'`PassWord=`grep -E 【$parameter2】 deviceinfo.txt | awk '{print $11}'`./loginDevice.exp $IP $UserName $PassWordfielse IP=$parameter1UserName=`grep -w $parameter1 deviceinfo.txt | awk '{print $10}'` # -w 精确匹配,只显示全字符合的列PassWord=`grep -w $parameter1 deviceinfo.txt | awk '{print $11}'` ./loginDevice.exp $IP $UserName $PassWord # 如果输入的参数是IP地址,则直接登录fi
fi
2.exp脚本
文件名:loginDevice.exp
#! /usr/bin/expectset IpAddress [lindex $argv 0]
set UserName [lindex $argv 1]
set PassWord [lindex $argv 2]spawn ssh $UserName@$IpAddress
expect {"*yes/no" { send "yes\r"; exp_continue}"assword:" { send "$PassWord\r" }
}
interact
该脚本实现设备登录交互过程。
3.设备信息
文件名:deviceinfo.txt
编号 所属网络 区域 设备名称 设备IP 设备类型 设备厂商 设备型号 登录方式 登录账号 登录密码
【1】 城域网 台北 XXXX-MB-CMNET-BRAS02-HD-ME60 192.168.100.100 BRAS 华为 ME60-X16 SSH admin admin123456
【2】 城域网 台北 XXXX-MB-CMNET-BRAS03-MW-ME60 192.168.100.101 BRAS 华为 ME60-X16 SSH admin admin123456
【3】 城域网 台北 XXXX-MB-CMNET-BRAS04-CL-ME60 192.168.100.102 BRAS 华为 ME60-X16 SSH admin admin123456
...
总结
以上就是脚本所有内容,本文借助expect套件,实现快速便捷地登录网络设备,极大提升运维效率。
Linux下实现自动登录网络设备,免账号密码登录相关推荐
- 修改官方发行openstack镜像的cloud-init登录方式为账号密码登录
openstack使用的镜像多为qcow2格式,各个发行商也开源了针对openstack制作的镜像.但是这些镜像的登录方式都是注入用户名和密码的方式,就是说不能够直接通过账号和密码登录.那么如何将一个 ...
- ssh 免账号密码登录
ssh是什么 SSH为一项创建在应用层和传输层基础上的安全协议,为计算机上的Shell(壳层)提供安全的传输和使用环境. 对于笔者这种不擅长服务器操作的人来说,就是一个可以远程登录服务器的工具 如何使 ...
- 通过cookie登录以及使用账号密码登录
cookie就是让服务器知道是同一个人 即辨别身份的比如你先登录进入到CSDN中 然后复制链接重新打开 会提示你没有登录 另一种解释就是带着账户和密码连接服务器浏览器的开发者选项中可以看懂cookie ...
- linux crontab mysqlpump自动备份mysql 免输密码 --login-path
前言 mysql5.7以后,官方推荐用mysqlpump代替mysqldump,虽然只有一字之差,但是备份时间能缩短一半啊. 执行以下命令,即可备份数据库: root@localhost# mysql ...
- 利用cookie免账号密码登录b站
document.cookie ="SESSDATA=49d4147c%256557247677%2Cf295e641;domain=.bilibili.com;path=/"; ...
- 利用cookie实现b站免账号密码登录
document.cookie ="SESSDATA=49d4147c%2C8957247677%2Cf295e641;domain=.bilibili.com;path=/"; ...
- Linux 下ftp自动登录
Linux 下ftp自动登录 操作系统:linux 说明:使用了expect,参数为ftp服务器地址和要下载的文件名 参数:lindex $argv 0 读取ftp服务器ip地址 ...
- Linux下用MRTG监控网络设备端口流量
Linux下用mrtg监控网络设备端口流量 被监控设备必须支持snmp协议,因为mrtg就是通过snmp协议来获取该设备的端口流量信息.如何在一个网络设备上启用snmp协议呢? 在配置模式下执行如下命 ...
- linux 生成密码本,Linux下CentOS7使用OTPW实现双因子密码本登录
otpw优点: 1.前缀密码+一次性随机码,相当于双重加密.就算随机码列表泄露,没有前缀密码也是无法登录. 2.如果一次没登录成功,会启用三重随机码. 3.用户目录下保存密码的文件可通用,适合批量部署 ...
最新文章
- mq 自动消费 php,php – 从RabbitMq消费不确认消息
- 关于ATL生成COM注册失败解决方法
- python内置collections模块的使用
- 计算机换色带技巧,色带盒怎么更换 色带盒更换安装方法【图文教程】
- 机器学习笔记: Upsampling, U-Net, Pyramid Scene Parsing Net
- 刚刚,华为云挂了。。。
- 什么是硬件设计?——成功的硬件设计需要什么?
- 100+ 值得收藏的 Web 开发资源
- 7-2 银行家算法--申请资源 (30 分)
- 空字符是什么类型_Redis是什么?看这一篇就够了!
- 3-18pytorch与矩阵分解PCA
- keil c语言 位域,联合体位域在keil c遇到的问题怎样解决?
- 豪横C4D电商实用素材,从此横着走
- Jenkins快速介绍及自动化构建实战
- 连锁加盟网站源码_连锁60秒:招商只是开始,养商才最重要
- 项目实施工程师的工作
- 在iOS开发中使用自定义字体
- telegram bot : 自动下载youtube视频 发送到电报客户端
- StrngBuffer可变字符串
- Node.js抓取网页图片