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 ...
随机推荐
- ODATA4 及实现
ODATA4 的JAVASCRIPT 实现: http://jaydata.org/ ODATA4 的JAVA 项目 Apache Olingo:http://olingo.incubato ...
- canvas如何兼容IE8
大家都知道canvas是个非常好玩的东西,但是IE9以下的浏览器不支持,有时候业务需求必须用到canvas,且又要求兼容IE8浏览器,那怎么办呢? 1.添加对html5的支持:<!--[if I ...
- 常用vim命令合集
移动命令: h:左移 l:右移 k:上移 j:下移 ^:移动到本行第一个非空白字符上 0:移动到本行第一个字符上 gg:移动到文件头 G = shift + g:移动到文件尾 %:从一个"{ ...
- http://www.cnblogs.com/monian/p/3822980.html
http://www.cnblogs.com/monian/p/3822980.html
- 我的mac OSX bash_profile文件
A typical install of OS X won't create a .bash_profile for you. When you want to run functions from ...
- riched32.dll riched20.dll msftedit.dll 解析
摘要: 本文对Rich Edit控件底层消息机制进行了讲解,以期读者对Windows平台下的Rich Edit控件有一个更深入的认识,同时对于使用Win32 SDK进行开发的人员具有一定参考价值.因为 ...
- maven命令解释
打包:mvn package编译:mvn compile编译测试程序:mvn test-compile清空:mvn clean运行测试:mvn test生成站点目录: mvn site生成站点目录并发 ...
- Servlet——简单用户登录实例+http协议解析
编写项目.用户登录系统1.0版本号 登录界面Servlet: package com.gavin.view; import java.io.IOException; import java.io.Pr ...
- leetcode 二分查找 Search in Rotated Sorted Array
Search in Rotated Sorted Array Total Accepted: 28132 Total Submissions: 98526My Submissions Suppose ...
- python abstractmethod 对象比较
from functools import total_ordering from abc import ABCMeta,abstractmethod @total_ordering class Sh ...