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自动交互的更多相关文章

  1. linux 的 expect 自动交互

    https://www.jianshu.com/p/0194cbd70d39 https://www.cnblogs.com/saneri/p/10819348.html  参考 expect是一个自 ...

  2. 脚本_使用expect自动交互远程主机安装软件

    #!bin/bash#功能:使用expect工具自动交互密码,远程到其它主机,安装httpd软件#作者:liusingbon#删除~/.ssh/known-hosts后,ssh远程任何主机,系统都会询 ...

  3. Linux Expect自动交互脚本

    https://likegeeks.com/expect-command/ In the previous post, we talked about writing practical shell ...

  4. (转)SSH批量分发管理&非交互式expect

    目录 1 SSH批量分发管理 1.1 测试环境 1.2 批量管理步骤 1.3 批量分发管理实例 1.3.1 利用sudo提权来实现没有权限的用户拷贝 1.3.2 利用sudo提权开发管理脚本 1.3. ...

  5. (转)Linux SSH批量分发管理

    Linux SSH批量分发管理 原文:http://blog.51cto.com/chenfage/1831166 第1章 SSH服务基础介绍 1.1 SSH服务 1.1.1SSH介绍 SSH是Sec ...

  6. Shell编程之Expect自动化交互程序

    一.Expect自动化交互程序 1.spawn命令 通过spawn执行一个命令或程序,之后所有的Expect操作都会在这个执行过的命令或程序进程中进行,包括自动交互功能. 语法: spawn [ 选项 ...

  7. Expect自动化交互程序

    Expect介绍: 1.什么是Expect Expect是一个用来实现自动化交互功能的软件套件,基于TCL的脚本编程工具语言,方便学习,功能强大. 2.为什么要使用expcet: 当今的企业运维中,自 ...

  8. Linux Shell 自动交互功能

    需求背景:   近日,在安装某软件过程,发现在安装过程需要输入一些信息才能继续下一步操作,在机器数量较少情况下,我们可以单台登录上去完成安装操作,但当机器数量超过一定时,如果再手动登录操作,就会产生大 ...

  9. [转]expect实现ssh自动交互

    shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh root@192.168.22.194 expect "*password:&quo ...

随机推荐

  1. OOAD-设计模式(三)之创建型设计模式(5种)

    前言 前面介绍了OOAD的基础知识,现在我们来详细的说明一下GOF设计模式中的23种模式,希望大家能够学到东西! 一.工厂方法模式(Factory Method) 1.1.工厂方法模式概述 工厂方法模 ...

  2. Markdown不常见功能

    推荐几个Markdown不常见功能 1.表情符号 emoji表情使用:EMOJICODE:的格式,详细列表可见 https://www.webpagefx.com/tools/emoji-cheat- ...

  3. Java运行时内存划分与垃圾回收--以及类加载机制基础

    ----JVM运行时内存划分----不同的区域存储的内容不同,职责因为不同1.方法区:被线程共享,存储被JVM加载的类的信息,常量,静态变量等2.运行时常量池:属于方法区的一部分,存放编译时期产生的字 ...

  4. AsyncTask学习

    在学习Android的时候,开始用到比较多的异步处理的类大概就是AsyncTask,但是我们很多时候只知道调用,却不知道思考一些东西. 本文就简单的总结和分析了一些AsyncTask的知识. 一.As ...

  5. Golang访问Redis初体验

    go语言的client在redis官网上有很多l客户端,个人感觉redigo使用起来更人性化,重要的是源代码结构很清晰,重要的是支持管道.发布和订阅.连接池等等,所以我选择redigo作为尝试. 1. ...

  6. Elasticsearch 索引别名与Template

    在使用elasticsearch的时候,经常会遇到需要淘汰掉历史数据的场景. 为了方便数据淘汰,并使得数据管理更加灵活,我们经常会以时间为粒度建立索引,例如: 每个月建立一个索引:monthly-20 ...

  7. 在XUnit中用Moq怎样模拟EntityFramework Core下的DbSet

    最近在做一个项目的单元测试时,遇到了些问题,解决后,觉得有必要记下来,并分享给需要的人,先简单说一下项目技术框架背景: asp.net core 2.0(for .net core)框架 用Entit ...

  8. Leetcode题解(十二)

    33.Search in Rotated Sorted Array 题目 这道题目如果没有其他要求,直接遍历一遍就可以知道答案,但是,题目给出了是排序了数组,但是数组有可能经过了旋转得到,其解题思路仍 ...

  9. poj 3340 Barbara Bennett's Wild Numbers(数位DP)

    Barbara Bennett's Wild Numbers Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 3153   A ...

  10. Air Raid

    Air Raid Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...