一般网站后台都是哪里做,做游戏制作 网站,深圳网站定制设计,wordpress审批优化自动化交互 自动化交互expect交互expect用法 sshpass概念shhpass的脚本批量拷贝文件批量传递秘钥批量修改密码 自动化交互
expect交互
yum -y install expect tcl tcl-devel //安装expect交互工具expect用法
用法:
1)#!/usr/bin/expect //定义脚本执行的shell
2)set … 自动化交互 自动化交互expect交互expect用法 sshpass概念shhpass的脚本批量拷贝文件批量传递秘钥批量修改密码 自动化交互
expect交互
yum -y install expect tcl tcl-devel //安装expect交互工具expect用法
用法:
1)#!/usr/bin/expect //定义脚本执行的shell
2)set timeout 30 //设置超时时间30s
3)spawn //传递交互命令
4)expect //判断输出结果是否包含某项字符串没有则立即返回
5)send //执行交互动作
6)interact //执行完后保持交互状态把控制权交给控制台
7)exp_continue //继续执行接下来的操作vim expect.exp //运行脚本使用命令expect expect.exp
#/usr/bin/expect //定义脚本执行的shellspawn ssh rootip地址 //启动系统中需要交互的程序expect
{yes/no {send yes\r; exp_continue} //send发送回答\r代表回车 //exp_continue在yes/no没出现时忽略这句话passwd: {send 密码\r}
}interact //停留在当前程序位置
bash调用expect语言
/usr/bin/expect -EOF
expect语言内容
expect eof //运行结束后离开当前程序位置返回之前工作位置
EOFsshpass
概念 实用程序旨在使用键盘交互密码身份验证模式运行SSH 但以非交互方式运行。 SSH使用直接TTY访问来确保密码确实是由交互式键盘用户发出的。在专用的TTY中运行SSH yum -y install sshpass //安装sshpass第一次使用ssh登录时需要输入yes/no
sshpass -p0 ssh -o StrictHostKeyCheckingno root10.12.153.146使用sshpass获取ip地址
sshpass -p0 ssh root10.12.153.146 ip a指定文件
echo 0 password
sshpass -f password ssh root10.36.182.100 ip a结合scp一起使用
sshpass -p 密码 scp file rootip:/路径远程解压
sshpass -p 密码 ssh rootip -tt tar -xzf 远程文件.tar包 -C 解压路径shhpass的脚本
批量拷贝文件
vim pass.txt
10.12.153.146 root 0 22#!/bin/bash
[ -f /etc/init.d/functions ] . /etc/init.d/functions
INFOpass.txt
for IP in $(awk {print $1} $INFO)
doUSER$(awk -v I$IP I$1{print $2} $INFO)PASS$(awk -v I$IP I$1{print $3} $INFO)PORT$(awk -v I$IP I$1{print $4} $INFO)sshpass -p $PASS scp -o StrictHostKeyCheckingno $1 ${USER}${IP}:$2 \action 拷贝成功 $IP /bin/true || action 拷贝失败 $IP /bin/false
donesshpass -p $PASS scp -o StrictHostKeyCheckingno $1 ${USER}${IP}:$2 action 拷贝成功 $IP /bin/true || action 拷贝失败 $IP /bin/false$1:要scp的文件
$2:scp的目标路径批量传递秘钥
vim pass.txt
10.12.153.146 root 0 22#!/bin/bash
[ ! -f $HOME/.ssh/id_rsa ] ssh-keygen -t rsa -b 2048 -N -f $HOME/.ssh/id_rsa
[ -f /etc/init.d/functions ] . /etc/init.d/functions
INFOpass.txt
for IP in $(awk /^[^#]/{print $1} $INFO)
doUSER$(awk -v I$IP I$1{print $2} $INFO)PASS$(awk -v I$IP I$1{print $3} $INFO)PORT$(awk -v I$IP I$1{print $4} $INFO)sshpass -p $PASS ssh-copy-id -o StrictHostKeyCheckingno ${USER}${IP} action 秘钥传输成功 $IP /bin/true || action 秘钥传输失败 $IP /bin/false
donessh-keygen -t rsa -b 2048 -N -f $HOME/.ssh/id_rsa
-t指定要创建的密钥类型
-b指定密钥长度
-N:提供一个新密语
-f指定用来保存密钥的文件名ssh-copy-id传输公钥的命令批量修改密码
vim pass.txt
10.12.153.146 root 0 22#!/bin/bash
[ -f /etc/init.d/functions ] . /etc/init.d/functions
OLD_INFOold_pass.txt
NEW_INFOnew_pass.txtfor IP in $(awk /^[^#]/{print $1} $OLD_INFO); doUSER$(awk -v I$IP I$1{print $2} $OLD_INFO)PASS$(awk -v I$IP I$1{print $3} $OLD_INFO)PORT$(awk -v I$IP I$1{print $4} $OLD_INFO)NEW_PASS$(openssl rand -base64 8)sshpass -p $PASS ssh -p $PORT $USER$IP -o StrictHostKeyCheckingno echo $NEW_PASS | passwd --stdin $USER ( echo $IP $USER $NEW_PASS $PORT [date %F %T] $NEW_INFO action 配置成功 $USER $IP $NEW_PASS /bin/true ) || action 配置失败 $USER $IP $PASS /bin/false
donesshpass -p $PASS ssh -p $PORT $USER$IP -o StrictHostKeyCheckingno echo $NEW_PASS | passwd --stdin $USER ( echo $IP $USER $NEW_PASS $PORT [date %F %T] $NEW_INFO action 配置成功 $USER $IP $NEW_PASS /bin/true ) || action 配置失败 $USER $IP $PASS /bin/false远程连接使用免交互方式更改用户密码成功的情况下将ip 用户 新密码 端口 日期追加到新密码的文件内并输入配置成功失败的情况下输出配置失败 用户 ip 老密码