SSH批量管理 expect自动交互
SSH批量管理
expect自动交互
原创博文http://www.cnblogs.com/elvi/p/7662908.html
# SSH批量管理
# expect自动交互 #############################
#!/bin/sh
# 初次使用,以root批量执行 CMD=(
date
uname -r
hostname
) sh ${[*]} . /etc/init.d/functions
[[ -f /usr/bin/expect ]] || { echo "install expect";yum install expect -y; } #若没expect则安装
########## #############################
# #SSH批量执行shell命令
#!/bin/sh
. /etc/init.d/functions
[[ $# == ]] && { echo 'ege: /bin/sh '$' "命令1;命令2"';exit; }
for n in
do
echo
ssh -p22 192.168..$n $*
[[ $? == ]] && action "========IP:192.168.20.$n========" /bin/true || action "========IP:192.168.20.$n========" /bin/false
done
########## #############################
###批量推送文件
#!/bin/sh
. /etc/init.d/functions
[[ $# == ]] && { echo 'ege: /bin/sh '$' "本地文件" "(远程)目录"';exit; }
for n in
do
scp -P22 $ sshync@192.168..$n ~/ >/dev/null >& &&\
ssh -p22 -t sshync@192.168..$n sudo rsync ~/$ $ >/dev/null >&
[[ $? == ]] && action "========IP:192.168.20.$n" /bin/true || action "========IP:192.168.20.$n" /bin/false
done
########## #############################
#!/bin/sh
# 批量分发SSHKEY . /etc/init.d/functions
[[ -f /usr/bin/expect ]] || { echo "install expect";yum install expect -y; } #若没expect则安装 PUB=/`whoami`/.ssh/id_dsa.pub
[[ -f $PUB ]] || { ssh-keygen -t dsa -P '' -f /`whoami`/.ssh/id_dsa>/dev/null >&; } #若没公钥则生成 USER=sshync
PASS=sshync
# IP : SIP + SIP_end
SIP=192.168..
SIP_end=( ) #expect自动交互
function EXP() {
/usr/bin/expect << EOF
set timeout
spawn ssh-copy-id -i $PUB "-p22 $USER@$SIP$n"
expect {
"yes/no" { send "yes\r";exp_continue }
"password:" { send "$PASS\n";exp_continue }
eof { exit }
}
EOF
}
#
[[ $ == y ]] || { echo -e 'ege: /bin/sh '$' y \n 当前'`whoami`'用户向远程用户'$USER'分发SSHKEY \n 远程主机列表'$SIP''${SIP_end[*]}' \n';exit; } for n in ${SIP_end[*]}
do
EXP |grep '.ssh/authorized_keys'>/dev/null >&
[[ $? == ]] && action "========IP:192.168.20.$n" /bin/true || action "========IP:192.168.20.$n" /bin/false
done #############################
#!/bin/sh
#Made by elven,
# MariaDB初始化,设置密码 DBPass=db2017
[[ -f /usr/bin/expect ]] || { echo "install expect";yum install expect -y; } #若没expect则安装
/usr/bin/expect << EOF
set timeout
spawn mysql_secure_installation
expect {
"enter for none" { send "\r"; exp_continue}
"Y/n" { send "Y\r" ; exp_continue}
"password:" { send "$DBPass\r"; exp_continue}
"new password:" { send "$DBPass\r"; exp_continue}
"Y/n" { send "Y\r" ; exp_continue}
eof { exit }
}
EOF
#测试
mysql -u root -p$DBPass -e "show databases;"
#############################
SSH批量管理 expect自动交互的更多相关文章
- linux 的 expect 自动交互
https://www.jianshu.com/p/0194cbd70d39 https://www.cnblogs.com/saneri/p/10819348.html 参考 expect是一个自 ...
- 脚本_使用expect自动交互远程主机安装软件
#!bin/bash#功能:使用expect工具自动交互密码,远程到其它主机,安装httpd软件#作者:liusingbon#删除~/.ssh/known-hosts后,ssh远程任何主机,系统都会询 ...
- Linux Expect自动交互脚本
https://likegeeks.com/expect-command/ In the previous post, we talked about writing practical shell ...
- (转)SSH批量分发管理&非交互式expect
目录 1 SSH批量分发管理 1.1 测试环境 1.2 批量管理步骤 1.3 批量分发管理实例 1.3.1 利用sudo提权来实现没有权限的用户拷贝 1.3.2 利用sudo提权开发管理脚本 1.3. ...
- (转)Linux SSH批量分发管理
Linux SSH批量分发管理 原文:http://blog.51cto.com/chenfage/1831166 第1章 SSH服务基础介绍 1.1 SSH服务 1.1.1SSH介绍 SSH是Sec ...
- Shell编程之Expect自动化交互程序
一.Expect自动化交互程序 1.spawn命令 通过spawn执行一个命令或程序,之后所有的Expect操作都会在这个执行过的命令或程序进程中进行,包括自动交互功能. 语法: spawn [ 选项 ...
- Expect自动化交互程序
Expect介绍: 1.什么是Expect Expect是一个用来实现自动化交互功能的软件套件,基于TCL的脚本编程工具语言,方便学习,功能强大. 2.为什么要使用expcet: 当今的企业运维中,自 ...
- Linux Shell 自动交互功能
需求背景: 近日,在安装某软件过程,发现在安装过程需要输入一些信息才能继续下一步操作,在机器数量较少情况下,我们可以单台登录上去完成安装操作,但当机器数量超过一定时,如果再手动登录操作,就会产生大 ...
- [转]expect实现ssh自动交互
shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh root@192.168.22.194 expect "*password:&quo ...
随机推荐
- IIC协议建模——读写EEPROM
案例采用明德扬设计思想完成.IIC协议是非常常用的接口协议,在电子类岗位招聘要求中经常出现它的身影.关于IIC协议这里只做简要介绍,详细信息请自行百度或查阅相关Datasheet,网上资料非常多.该篇 ...
- Hibternate框架笔记
Hibernate框架 配置 配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE h ...
- swift 之 函数
swift的函数跟脚本语言有很多神似之处. 如果有一天用swift开发服务器 ,很期待哇(一切皆有可能,毕竟人家说要跑在Linux上),
- .9-Vue源码之AST(5)
上节跑完了超长的parse函数: // Line-9261 function baseCompile(template, options) { // Done! var ast = parse(tem ...
- 哈尔滨理工大学第六届程序设计团队 I-Team
/* 以前做过一个插队的题,这个类似从后往前操作 */ #include <iostream> #include <stdio.h> #include <algorith ...
- Android 开发笔记___复选框__checkbox
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...
- AngularJS学习篇(十九)
AngularJS Bootstrap 可以在你的 AngularJS 应用中加入 Twitter Bootstrap,你可以在你的 <head>元素中添加如下代码: <link r ...
- 快速学会使用Fiddler抓包 截包伪造提交包
1.Fiddler介绍 Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑,移动设备和互联网之间的http通讯,设置断点,查看所有的"进出"Fiddler的 ...
- js的call() ,apply() 两种方法的区别和用法,最白话文的解释,让枯燥滚粗!
百度了一圈calll()函数和apply()函数,感觉还是糊里糊涂 正好我前几天刚又重新翻了一遍 那本 600多页 的圣经书,我习惯时不时的去打下基础,只是为了用来装逼,给人讲解....(我是有多蛋疼 ...
- python 标准模块 string
string 模块提供了一些用于处理字符串类型的函数 案例: #!/usr/bin/evn python #_*_ coding:utf-8 -*- import string text = &quo ...