Linux shell (ssh批量配置免秘)读取配置文件,进行远程操作
需要目标机器安装有 expect 命令
分成五个文件config.ini(配置文件)、id_ras.pub(公钥)、read.sh(一个函数,用于读取配置文件)、test.sh(执行文件)、run.sh(远程运行脚本) 是一个配置文件.
步骤1:读取配置文件 ip,user,pwd
步骤2:将id_rsa.pub、run.sh scp到远程机器上
步骤3:远程运行脚本
read.sh
#!/bin/bash GetKey(){
section=$(echo $ |cut -d '.' -f )
key=$(echo $ |cut -d '.' -f )
if [ "$section"x = "ip"x ];then
nub=`cat config.ini | grep -n "$key={" |awk -F ":" '{print $1}'`
nue=`cat config.ini | grep -n "}" |awk -F ":" '{print $1}'`
nub=`expr $nub +`
for i in $nue
do
if [ $i -gt $nub ]; then
a=$i
break
fi
done
nue=`expr $a -`
sed -n "$nub,$nue p" config |sed s/,//g
else
sed -n "/\[$section\]/,/\[.*\]/{
/^\[.*\]/d
/^[ \t]*$/d
/^$/d
/^#.*$/d
s/^[ \t]*$key[ \t]*=[ \t]*\(.*\)[ \t]*/\/p
}" config.ini
}
run.sh
#!/bin/bash Create(){
/usr/bin/expect -c"
set timeout
spawn ssh-keygen -t rsa
expect \":\"
send \"\r\"
expect \":\"
send \"\r\"
expect \":\"
send \"\r\"
expect eof
exit
"
} if [ ! -d .ssh ];then
Create
if [ $? != ];then
echo "step for create failed"
exit
else
cat id_rsa.pub >> .ssh/authorized_keys
if [ $? != ];then
echo "step for cp failed"
exit
fi
fi
else
cat id_rsa.pub >> .ssh/authorized_keys
if [ $? != ];then
echo "step for cp failed"
exit
fi
fi
test.sh
#!/bin/bash
. ./read.sh ip=$(GetKey "ip.ip")
passwd=$(GetKey "pass.passwd")
user=$(GetKey "user.usr") for i in $ip
do
/usr/bin/expect -c"
set timeout10
spawn /usr/bin/scp -r run.sh $user@$i
expect \"password:\" {send \"$passwd\r\"}
spawn /usr/bin/scp -r id_rsa.pub $user@$i
expect \"password:\" {send \"$passwd\r\"}
expect eof
exit
"
/usr/bin/expect << EOF
set timeout
spawn ssh user@$i
expect "password:"
send "$passwd\r"
expect "]"
send "sh run.sh\r"
send "exit\r"
expect eof
EOF
done
配置文件
[ip]
ip={
12.23.31.114
,21.34.54.112
} [user]
usr=hehehe [pass]
passwd=wohehehda
Linux shell (ssh批量配置免秘)读取配置文件,进行远程操作的更多相关文章
- Linux shell脚本 批量创建多个用户
Linux shell脚本 批量创建多个用户 #!/bin/bash groupadd charlesgroup for username in charles1 charles2 charles3 ...
- SSH原理与运用(二):远程操作与端口转发
SSH原理与运用(二):远程操作与端口转发 作者:阮一峰 (Image credit: Tony Narlock) 七.远程操作 SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作. 上一 ...
- [转帖]SSH原理与运用(二):远程操作与端口转发
SSH原理与运用(二):远程操作与端口转发 http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html 接着前一次的文章,继续介绍S ...
- Linux使用ssh公钥实现免批量分发管理服务器
ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 管理机器外网IP10.0.0.61(内网172.16.1.61) 服务器外网1 ...
- Linux之间配置免秘钥访问
环境说明 [root@localhost1 ~]# cat /etc/redhat-release CentOS release 6.5 (Final) [root@localhost1 ~]# un ...
- hadoop再次集群搭建(2)-配置免秘钥ssh登录
SSH对于大多程序员都不陌生,目前主流的云服务提供上也是通过SSH来提供链接的安全保障,比如AWS通过使用下载的私钥(private key)实现与EC2实例安全连接.GitHub通过上传的公钥(pu ...
- SSH配置免秘钥登录
一. SSH 配置免秘要登录 配置SSH 免秘要登录,虽然就那么几步,但总是会出现点小问题,今天就做下记录.SSH 免秘钥就是让两台机器相互信任,不需要输入密码就能相互登录.配置相互信任就是把各自的 ...
- ssh、scp免秘钥远程执行命令:expect
首先安装expect # yum -y install expect 命令格式 # ./expect IP COMM #expect是独立的工具,所以不能用sh来执行 1 2 3 4 5 6 7 ...
- linux下ssh/sftp配置和权限设置
基于 ssh 的 sftp 服务相比 ftp 有更好的安全性(非明文帐号密码传输)和方便的权限管理(限制用户的活动目录). 1.开通 sftp 帐号,使用户只能 sftp 操作文件, 而不能 ssh ...
随机推荐
- webstorm9 License Key
用户名 oschina 注册码 ===== LICENSE BEGIN ===== 7362-D18089T 00000xmyY1VfVxjkElWULKcA5XHbfN 5qjOh3fgGZvNXH ...
- D3.js系列——比例尺和坐标轴
比例尺是 D3 中很重要的一个概念.绘制图形时直接用数值的大小来代表像素不是一种好方法,本章正是要解决此问题. 一.为什么需要比例尺 上一章制作了一个柱形图,当时有一个数组,绘图时,直接使用 250 ...
- golang中的那些坑之迭代器中的指针使用
今天在编写代码的时候,遇到了一个莫名其妙的错误,debug了半天,发现这是一个非常典型且易犯的错误.记之 示例代码: package main import "fmt" type ...
- Odoo8模块中增加延时自动消失的提示
在odoo中,如果必要栏位没有值,在保存时右上角会有如下图的提示,该提示会延时并自动关闭. 有网友问如何在自己的模块中增加这样的提示,以方便用户在操作时,能提示一些必要的信息.下面例出大致的步骤以供参 ...
- Taobao OpenERP Connector 简要说明
Taobao OpenERP Connector 项目托管地址:https://github.com/buke/openerp-taobao 作者: wangbuke@gmail.com 功能: 1. ...
- ios 第三方qq登陆,号码禁止授权
在以下加入測试账号就可以 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWxpbmNleGlhb2hhbw==/font/5a6L5L2T/fontsiz ...
- Parallel小记
List<Temp> tList = new List<Temp>(); ; i < ; i++) { tList.Add(new Temp() { id = i, na ...
- oci pool
http://wenku.baidu.com/link?url=uS8tWxcs7MxNdx5HiGCEyvXsCj0zF5-7pCRVQtlRH5eVuMmSKKqNziSc2O_pyepnnuc_ ...
- 用JS将json日期格式化成正常日期
function ChangeDateFormat(cellval) { var date = new Date(parseInt(cellval.replace(&qu ...
- 解决window10系统电脑插入耳机之后没有声音的问题
其实办法也是从百度百科上查到的 ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄ 可能是因为自己某个不小心的操作更改了设置 1. 首先要点开设置按钮,在搜索栏输入控制面板 (当然知道控制面板在哪里的小伙伴就不用 ...