900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 【Linux】30.ssh不用手动输入密码登录终端sshpass 和 shell脚本后跟参数自动匹配case的用法

【Linux】30.ssh不用手动输入密码登录终端sshpass 和 shell脚本后跟参数自动匹配case的用法

时间:2018-11-09 09:22:40

相关推荐

【Linux】30.ssh不用手动输入密码登录终端sshpass 和 shell脚本后跟参数自动匹配case的用法

ssh不用手动输入密码登录终端sshpass 和 case的组合用法

1.sshpass 的用法

在第一次手动输入密码ssh mdc@172.16.34.17 登陆上终端后,可以把下面两条语句做成shell脚本来直接登录终端,省去了每次输入密码的麻烦。

password=123456sshpass -p $password ssh mdc@172.16.34.17

2.case匹配shell脚本后的不同参数的使用

case $1 in 17)# 如果脚本后跟的第一个参数为 17, 则执行这里的语句;;a|-b)# 如果脚本后跟的第一个参数为 a 或者 -b, 则执行这里的语句;;*)# 当shell脚本后没指定参数,则执行这里的默认语句;;esac

下面是 sshpass 和 case的组合用法

#set -x# 判断是否安装了sshpassif ! type sshpass >/dev/null 2>&1; thenecho 'sshpass 未安装'sudo apt install -y sshpassfi# 定义info函数function info() {(>&2 echo -e "[\e[34m\e[1mINFO\e[0m] $*")}password=aaa123456case $1 in 17)echo ""info "login mdc@172.16.34.17 "sshpass -p $password ssh mdc@172.16.34.17 -o "StrictHostKeyChecking no"a)echo ""info "login mdc@172.16.33.200"echo ""sshpass -p $password ssh mdc@172.16.33.200 -o "StrictHostKeyChecking no";;push|-p)echo ""info "push release to mdc@192.168.1.6:/home/mdc/personal/zhz/"echo ""sshpass -p $password scp -rP 22 /home/cidi/squirrel/squirrel_docker/examples/env_fusion/squirrel_framework/release mdc@192.168.1.6:/home/mdc/personal/zhz/;;*)echo ""info "login mdc@192.168.1.6 -p 22"echo ""sshpass -p $password ssh mdc@192.168.1.6 -p 22 -o "StrictHostKeyChecking no";;esac

下面来分析上面脚本中的-o "StrictHostKeyChecking no"的作用。

有时候会需要登录不同设备主机,但是这些设备主机的ip都是一样的,如IP都为192.168.200.199,使用ssh登录另一台设备主机就会出现下图的情况:

需要按照图中提示,在终端复制粘贴输入这一行:

ssh-keygen -f "/home/hostname/.ssh/known_hosts" -R 192.168.200.199

这一步执行过后,使用sshpass的shell脚本登录主机时,并不会成功,因为他会询问(yes/no)

如果不想每次第一次访问该设备主机时都要手动输入yes,并输入主机密码,可以在脚本的ssh命令最后后面加上-o "StrictHostKeyChecking no"

也可以使用这个方法:在ubuntu系统中/etc/ssh/ssh_config文件中有一行

# StrictHostKeyChecking ask

把这一行取消注释,然后把ask修改为no。这样就可以直接使用脚本第一次登录,不用再手动输入密码。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。