ssh非交互式密码授权远程执行脚本

简介:

    公司有上百台服务器,需要为每台服务器都执行一个脚本,因为所有服务器的账号密码都是一样的,所以可以不用搭建ansible等自动化运维工具,我们直接通过ssh远程执行即可完成


本文以三台服务器为例,系统版本:Centos7.3

1、安装sshpass

cd /etc/yum.repos.d/

wge thttp://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 $dest_user@$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 $dest_user@$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


目录结构

wKioL1j-w-_B5KBQAAAoBxUi_h8297.png-wh_50


执行脚本

sh command.sh

wKiom1j-yovRx3DPAAAlLummurk896.png-wh_50

注意:第一次执行会提示如下警告,是因为让ssh自动添加到已知主机文件中的提示,可忽略

Warning: Permanently added '192.168.19.142' (ECDSA) to the list of known hosts.


5、查看结果

在当前目录下会产生日志文件 scpssh.log

并在远程服务器上可查看到生成了test文档

wKiom1j-ywGxfPmLAAAd0Nqc46M217.png-wh_50



注意:提示 Host key verification failed ,避免该问题可以在ssh或scp的时候通过-o选择加参数数 StrictHostKeyChecking=no,让ssh自动添加到已知主机文件中,来避免该问题。


参考文章:http://www.361way.com/sshpass-expect/4378.html





      本文转自M四月天 51CTO博客,原文链接:http://blog.51cto.com/msiyuetian/1919166,如需转载请自行联系原作者




相关文章
|
5月前
|
网络安全 数据安全/隐私保护
ssh远程执行命令自动输入密码方式
ssh远程执行命令自动输入密码方式
532 0
|
6月前
|
运维 应用服务中间件 网络安全
Ansible自动化运维工具之解决SSH连接使用明文密码问题(4)
Ansible自动化运维工具之解决SSH连接使用明文密码问题(4)
|
1月前
|
安全 Shell 网络安全
ssh配置无密码验证
ssh配置无密码验证要在SSH中配置无密码验证,您需要使用公钥验证【2月更文挑战第18天】
39 1
|
2月前
|
安全 网络协议 Linux
|
2月前
|
安全 网络协议 Shell
SSH连接密码问题:原因、表现与解决方案
SSH连接密码问题:原因、表现与解决方案
96 3
|
2月前
|
关系型数据库 网络安全 数据库
通过SSH登录OceanBase数据库需要修改用户密码,然后使用SSH客户端进行远程登录
通过SSH登录OceanBase数据库需要修改用户密码,然后使用SSH客户端进行远程登录
76 6
|
2月前
|
存储 Linux 网络安全
如何在 Linux 中删除 SSL 证书和 SSH 密码?
如何在 Linux 中删除 SSL 证书和 SSH 密码?
85 1
如何在 Linux 中删除 SSL 证书和 SSH 密码?
|
3月前
|
安全 Linux Shell
Linux服务器配置SSH免密码登录后,登录仍提示输入密码(一次真实的问题排查解决记录)
Linux服务器配置SSH免密码登录后,登录仍提示输入密码(一次真实的问题排查解决记录)
94 0
|
4月前
|
网络安全
设定开机脚本自动链接ssh
设定开机脚本自动链接ssh
31 0
|
5月前
|
Shell Linux 网络安全
ssh 主机之间免密配置脚本
ssh 主机之间免密配置脚本
44 0