文章目录

  • 前言
  • 一、实现原理
  • 二、使用步骤
    • 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下实现自动登录网络设备,免账号密码登录相关推荐

  1. 修改官方发行openstack镜像的cloud-init登录方式为账号密码登录

    openstack使用的镜像多为qcow2格式,各个发行商也开源了针对openstack制作的镜像.但是这些镜像的登录方式都是注入用户名和密码的方式,就是说不能够直接通过账号和密码登录.那么如何将一个 ...

  2. ssh 免账号密码登录

    ssh是什么 SSH为一项创建在应用层和传输层基础上的安全协议,为计算机上的Shell(壳层)提供安全的传输和使用环境. 对于笔者这种不擅长服务器操作的人来说,就是一个可以远程登录服务器的工具 如何使 ...

  3. 通过cookie登录以及使用账号密码登录

    cookie就是让服务器知道是同一个人 即辨别身份的比如你先登录进入到CSDN中 然后复制链接重新打开 会提示你没有登录 另一种解释就是带着账户和密码连接服务器浏览器的开发者选项中可以看懂cookie ...

  4. linux crontab mysqlpump自动备份mysql 免输密码 --login-path

    前言 mysql5.7以后,官方推荐用mysqlpump代替mysqldump,虽然只有一字之差,但是备份时间能缩短一半啊. 执行以下命令,即可备份数据库: root@localhost# mysql ...

  5. 利用cookie免账号密码登录b站

    document.cookie ="SESSDATA=49d4147c%256557247677%2Cf295e641;domain=.bilibili.com;path=/"; ...

  6. 利用cookie实现b站免账号密码登录

    document.cookie ="SESSDATA=49d4147c%2C8957247677%2Cf295e641;domain=.bilibili.com;path=/"; ...

  7. Linux 下ftp自动登录

    Linux 下ftp自动登录      操作系统:linux 说明:使用了expect,参数为ftp服务器地址和要下载的文件名 参数:lindex $argv 0  读取ftp服务器ip地址      ...

  8. Linux下用MRTG监控网络设备端口流量

    Linux下用mrtg监控网络设备端口流量 被监控设备必须支持snmp协议,因为mrtg就是通过snmp协议来获取该设备的端口流量信息.如何在一个网络设备上启用snmp协议呢? 在配置模式下执行如下命 ...

  9. linux 生成密码本,Linux下CentOS7使用OTPW实现双因子密码本登录

    otpw优点: 1.前缀密码+一次性随机码,相当于双重加密.就算随机码列表泄露,没有前缀密码也是无法登录. 2.如果一次没登录成功,会启用三重随机码. 3.用户目录下保存密码的文件可通用,适合批量部署 ...

最新文章

  1. mq 自动消费 php,php – 从RabbitMq消费不确认消息
  2. 关于ATL生成COM注册失败解决方法
  3. python内置collections模块的使用
  4. 计算机换色带技巧,色带盒怎么更换 色带盒更换安装方法【图文教程】
  5. 机器学习笔记: Upsampling, U-Net, Pyramid Scene Parsing Net
  6. 刚刚,华为云挂了。。。
  7. 什么是硬件设计?——成功的硬件设计需要什么?
  8. 100+ 值得收藏的 Web 开发资源
  9. 7-2 银行家算法--申请资源 (30 分)
  10. 空字符是什么类型_Redis是什么?看这一篇就够了!
  11. 3-18pytorch与矩阵分解PCA
  12. keil c语言 位域,联合体位域在keil c遇到的问题怎样解决?
  13. 豪横C4D电商实用素材,从此横着走
  14. Jenkins快速介绍及自动化构建实战
  15. 连锁加盟网站源码_连锁60秒:招商只是开始,养商才最重要
  16. 项目实施工程师的工作
  17. 在iOS开发中使用自定义字体
  18. telegram bot : 自动下载youtube视频 发送到电报客户端
  19. StrngBuffer可变字符串
  20. Node.js抓取网页图片

热门文章

  1. C# ushort强制转换int会导致丢失
  2. TCP—-SYN、ACK-、FIN、RST、PSH、URG-详解
  3. MacOS虚拟机环境制作交叉编译器步骤
  4. 【功能业务篇】APP授权微信登录、绑定账号测试思考
  5. [TJOI2013]黄金矿工解题报告
  6. cp2102 usb驱动官网
  7. 安装mysql黑屏电脑卡死_电脑卡屏死机是怎么回事?
  8. 西工大空院电子信息工程本科主干课程回顾总结
  9. JS比较两个日期大小
  10. 移动运营商ipcc文件_如何在苹果官网提取IPCC文件?