[Shell]Linux下SSH免输密码快速登陆
在linux下可以通过ssh 连接远端设备时需要手动输入用户名和密码,免输入用户可以直接通过ssh -l Username 方式实现,但要做免输入密码使用ssh命令无法实现,此时需要用到expect。
分别构建两个脚本,一个fssh 一个my.exp
my.exp实现ssh免输密码登陆,fssh记录用户名、密码、ip地址等信息。
分别将两个脚本放到/usr/bin目录下,并增加执行权限。
通过执行命令fssh XX 即可登陆到对应的远端设备
Fssh 脚本
#!/bin/sh store1(){ User=admin Passwd=admin IPaddr=1.1.1.1 /usr/bin/my.exp $User $Passwd $IPaddr } store2(){ User=admin Passwd=admin IPaddr=2.2.2.2 /usr/bin/my.exp $User $Passwd $IPaddr } bhc(){ User=admin Passwd=admin IPaddr=3.3.3.3 /usr/bin/my.exp $User $Passwd $IPaddr } store4(){ User=store4 Passwd=admin IPaddr=4.4.4.4 /usr/bin/my.exp $User $Passwd $IPaddr } asa5510(){ User=store4 Passwd=admin IPaddr=5.5.5.5 /usr/bin/my.exp $User $Passwd $IPaddr } if [ $1 = "store1" ];then store1 elif [ $1 = "store4" ];then store4 elif [ $1 = "store2" ];then store2 elif [ $1 = "bhc" ];then bhc elif [ $1 = "asa5510" ];then asa5510 else echo "var error" fi
1 |
expect 脚本:my.exp
#!/usr/bin/expect -f set User [lindex $argv 0] set Passwd [lindex $argv 1] set IPadd [lindex $argv 2] spawn ssh $User@$IPadd expect { "*yes/no" { send "yes\r";exp_continue } "*assword*" { send "$Passwd\r" } } interact exit
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】