ssh非交互式密码授权远程执行脚本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ssh非交互式密码授权远程执行脚本相关的知识,希望对你有一定的参考价值。
公司有上百台服务器,需要为每台服务器都执行一个脚本,因为所有服务器的账号密码都是一样的,所以可以不用搭建ansible等自动化运维工具,我们直接通过ssh远程执行即可完成
本文以三台服务器为例,系统版本:Centos7.3
1、安装sshpass
cd /etc/yum.repos.d/
wgethttp://download.opensuse.org/repositories/home:Strahlex/CentOS_CentOS-6/home:Strahlex.repo
yum install -y sshpass
2、新建IP地址列表文件
cd /usr/local/sbin
vim iplist.txt
192.168.19.142 192.168.19.143 |
3、编写脚本
脚本思路:先拷贝需要远程执行的脚本文件到各远程服务器上,然后通过ssh远程执行脚本。
vim command.sh
#! /bin/bash pw=`pwd` dest_user=root dest_pwd=Admin123 dest_path=/usr/local/sbin script_name=cmd.sh chmod +x $pw/$script_name [ ! -f $pw/scpssh.log ] && touch $pw/scpssh.log echo begin > $pw/scpssh.log for ip in `cat $pw/iplist.txt` do sshpass -p $dest_pwd scp -P22 -o StrictHostKeyChecking=no $pw/$script_name [email protected]$ip:$dest_path if [ $? = 0 ] then echo $ip scp success |tee -a $pw/scpssh.log else echo $ip scp failed |tee -a $pw/scpssh.log echo >> $pw/scpssh.log fi sshpass -p $dest_pwd ssh -P22 -o StrictHostKeyChecking=no [email protected]$ip $dest_path/$script_name if [ $? = 0 ] then echo $ip ssh success |tee -a $pw/scpssh.log else echo $ip ssh failed |tee -a $pw/scpssh.log echo >> $pw/scpssh.log fi done echo End! >> $pw/scpssh.log |
说明:dest_path为远程机器的路径,script_name为需要远程执行的脚本名称。
赋予执行权限
chmod +x command.sh
4、执行脚本
把需要远程执行的脚本cmd.sh放在/usr/local/sbin/目录中,该远程脚本只是在远程服务器/usr/local/sbin/目录下创建一个文件夹。
cat cmd.sh
#! /bin/bash cd /usr/local/sbin pw=`pwd` mkdir $pw/test |
目录结构
执行脚本
sh command.sh
注意:第一次执行会提示如下警告,是因为让ssh自动添加到已知主机文件中的提示,可忽略
Warning: Permanently added ‘192.168.19.142‘ (ECDSA) to the list of known hosts.
5、查看结果
在当前目录下会产生日志文件 scpssh.log
并在远程服务器上可查看到生成了test文档
注意:提示 Host key verification failed ,避免该问题可以在ssh或scp的时候通过-o选择加参数数 StrictHostKeyChecking=no,让ssh自动添加到已知主机文件中,来避免该问题。
参考文章:http://www.361way.com/sshpass-expect/4378.html
本文出自 “M四月天” 博客,请务必保留此出处http://msiyuetian.blog.51cto.com/8637744/1919166
以上是关于ssh非交互式密码授权远程执行脚本的主要内容,如果未能解决你的问题,请参考以下文章
Shell 脚本 ssh免密码 登录 远程服务器 sshpass用法示例
shell脚本中ssh到远程机子时,提示输入密码?用变量给出密码 要怎么做?请各位帮忙
怎么在一个shell脚本中执行远程主机的另一个shell脚本?? ssh已经可以无密码登录了。