已整理-sshpass 脚本应用案例
sshpass一个简单、轻量级命令行工具,提供非交互式密码验证
原理:
1、ssh 直接使用 TTY 访问,以确保密码是用户键盘输入的。 sshpass 在专门的 tty 中运行 ssh,以误导 ssh 相信它是从用户接收到的密码
2、使用 sshpass 是不安全的,因为所有系统上的用户可以看到密码。因此,在生产环境,建议使用 密钥登录。
安装:
1 2 | # yum install epel-release # yum install sshpass |
命令语法:
1 | sshpass [options] ssh user@host |
options
-p password #直接提供密码
1 | # sshpass -p '123456' ssh aaronkilik@10.42.0.1 'df -h' |
-e #读取环境变量 SSHPASS,在bashrc 中添加 SSHPASS 环境变量,配置登录密码
1 2 3 4 5 | export SSHPASS= 'PmN8uq48tBGwrMCY' sshpass -e ssh user@host # 配置别名使用更香 alias sshtup= 'sshpass -e ssh root@192.20.0.164 ' "'" 'sh /root/update .sh '"' " '' |
-f filename #从文件中读取密码
1 | # sshpass -f password_filename ssh aaronkilik@10.42.0.1 'df -h' |
但最好加上:ssh -o StrictHostKeyChecking=no
示例脚本如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/bin/bash >result.txt >error_ssh_ip.txt >temp.txt for i in ` cat linux.txt` do ping -c 3 -i 0.2 -W 1 $i &> /dev/null [ $? - eq 0 ] && echo $i " is ok" || continue sshpass -p '123456' ssh -o StrictHostKeyChecking=no admin@$i 'ps -ef |egrep "rsyslog|rpc|rpc.statd|python|dns"|grep -v grep' &> temp.txt if [ $? - ne 0 ] ; then echo $i >> error_ssh_ip.txt continue fi awk '{print res_ip," ",$0}' res_ip=$i temp.txt >>result.txt done |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY