以下来自:
Expect是在Tcl基础上创建起来的,它还提供了一些Tcl所没有的命令,它可以用来做一些linux下无法做到交互的一些命令操作,在远程管 理方面发挥很大的作用。
spawn命令激活一个Unix程序来进行交互式的运行。
send命令向进程发送字符串。
expect 命令等待进程的某些字符串。
expect支持正规表达式并能同时等待多个字符串,并对每一个字符串执行不同的操作.
A. Tcl 安装
主页: http://www.tcl.tk
下载地址: http://www.tcl.tk/software/tcltk/downloadnow84.tml
1.下载源码包
wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz
2.解压缩源码包
tar xfvz tcl8.4.11-src.tar.gz
3.安装配置
cd tcl8.4.11/unix
./configure --prefix=/usr/tcl --enable-shared
make
make install
安装完毕以后,进入tcl源代码的根目录,把子目录unix下面的tclUnixPort.h copy到子目录generic中。
暂时不要删除tcl源代码,因为expect的安装过程还需要用。
B. expect 安装 (需Tcl的库)
主页: http://expect.nist.gov/
1.下载源码包
wget http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz/download
2.解压缩源码包
tar xzvf expect5.45.tar.gz
3.安装配置
cd expect5.45
./configure --prefix=/usr/expect --with-tcl=/usr/tcl/lib --with-tclinclude=../tcl8.4.11/generic
make
make install
ln -s /usr/tcl/bin/expect /usr/expect/bin/expect
通过脚本批量部署ssh私钥认证
最好用yum install expect来安装
[b]把脚本放置/expect下面,注意有的需要用>>[/b]
先创建一个sh脚本:
test.sh
#!/bin/bash
cd /expect
cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys
for i in `cat /expect/ip.txt`
do
ip=$(echo "$i"|cut -f1 -d":")
password=$(echo "$i"|cut -f2 -d":")
expect -c "
spawn scp /root/.ssh/authorized_keys /expect/remote_operate.sh root@$ip:/tmp/
expect {
\"*yes/no*\" {send \"yes\r\"; exp_continue}
\"*password*\" {send \"$password\r\"; exp_continue}
\"*Password*\" {send \"$password\r\";}
}
"
expect -c "
spawn ssh root@$ip "/tmp/remote_operate.sh"
expect {
\"*yes/no*\" {send \"yes\r\"; exp_continue}
\"*password*\" {send \"$password\r\"; exp_continue}
\"*Password*\" {send \"$password\r\";}
}
"
done
以下为remote_operate.sh脚本内容:
#!/bin/bash
if [ ! -d /root/.ssh ]; then
mkdir /root/.ssh
fi
cp /tmp/authorized_keys /root/.ssh/
以下为ip.txt内容
[root@localhost expect]# more ip.txt
192.168.1.114:haning
192.168.1.115:haning
192.168.1.112:haning
以上OK后。只需要执行sh test.sh
分享到:
相关推荐
标题提到的“自动登陆ssh,批量ip脚本操作”是指使用脚本自动化地通过SSH(Secure Shell)协议连接到多个具有不同IP地址的远程服务器。这种方法对于系统管理员来说非常实用,可以减少手动登录每个服务器的时间和工作...
标题中的“shell自动化部署批量建立用户和批量SSH配置”指的是使用Linux Shell脚本来自动化创建多个用户账户,并且配置这些用户可以使用SSH进行无密码登录。这个过程在IT运维中非常常见,特别是在设置服务器集群或者...
SSH脚本是利用SSH协议进行自动化任务执行的一种方式,它允许用户预先定义一系列命令,通过一个脚本来批量执行,极大地提高了系统管理员的工作效率。在Linux和Unix-like操作系统中,SSH脚本通常使用Shell脚本语言编写...
在这个场景中,我们讨论的是如何使用SSH来远程执行脚本,特别是在多台Linux服务器之间进行批量操作。这个过程通常涉及到几个关键步骤,包括配置SSH免密登录和编写能够跨主机执行命令的shell脚本。 首先,让我们详细...
`Expect`是一个强大的脚本语言,专门设计用于自动化重复性的交互式任务,非常适合批量部署。 **1. 安装Expect及TCL** 首先需要在一台服务器上(例如192.168.10.202)安装`TCL`和`Expect`。 ```bash [root@server-...
本文档将详细介绍如何通过编写Windows脚本来实现文件的自动归档、压缩以及通过SFTP方式上传至备份服务器的过程。 #### 背景 在之前的项目中,通常使用SyncBackSE工具来完成文件的自动归档和压缩,并将其上传到备份...
标题中的“SSH2做的一个批量操作用--List”指的是使用SSH2(Secure Shell version 2)协议进行批量执行命令或脚本的操作。SSH2是一种安全的网络协议,用于在远程服务器上执行命令、传输文件等操作,常用于系统管理、...
11. **自动化脚本**:SSH可以通过脚本批量执行远程操作,如使用`ssh -t`执行远程命令,或者结合`expect`脚本处理交互式登录。 12. **性能优化**:通过调整SSH配置文件中的参数(如`ClientAliveInterval`,`...
这主要依赖于SSH密钥对认证机制,即生成一对公钥和私钥,将公钥部署到目标服务器的`~/.ssh/authorized_keys`文件中,私钥保留在本地。这样,当本地主机尝试通过SSH连接到远程服务器时,系统会自动用私钥进行身份验证...
在IT领域,尤其是在服务器管理、集群部署或者自动化运维中,批量配置免密登录是一个非常实用的技巧。这有助于简化远程访问过程,提高工作效率。本文将详细介绍如何实现这一功能,主要涉及SSH(Secure Shell)协议、...
SSH免登录依赖于公钥认证机制,即在每台主机上都有一对密钥,公钥存储在`~/.ssh/authorized_keys`文件中,私钥则保留在本地。当远程主机接收到来自具有对应公钥的连接请求时,会自动验证并允许登录,无需输入密码。 ...
3. **命令自动化**:通过SSH,用户可以编写脚本批量执行远程服务器上的任务,提高工作效率。 4. **密钥认证**:除了传统的密码认证,SSH还可以使用公钥/私钥对进行身份验证,提供更高的安全性。 5. **端口转发**:...
通过这些脚本,我们可以学习到如何利用Shell脚本进行自动化运维,如批量生成和部署SSH密钥,自动化SCP文件传输,以及如何使用Expect库来处理需要用户交互的命令。这些都是IT专业人士在日常工作中非常实用的技能,...
8. **持续集成/持续部署(CI/CD)**:批量拿服务器也是CI/CD流程的一部分,通过Jenkins、GitLab CI/CD等工具,可以自动化构建、测试和部署应用程序到多台服务器。 9. **容器化与Kubernetes**:随着容器技术的发展,如...
这种自动化大大减少了手动操作的时间和出错可能性,尤其适用于批量部署或测试环境。 在`linux环境准备脚本`中,我们可以期待看到上述各项配置的详细实现。这个脚本对于系统管理员来说非常有价值,因为它提供了一个...
9. **自动化脚本**:编写bash或Python脚本,利用SSH批量管理远程服务器,如自动部署、系统维护等。 10. **安全最佳实践**:了解如何保持SSH的安全性,如定期更新密钥、禁用密码认证、启用双因素认证等。 通过这个...
5. **自动化与脚本**:SSH 可以与 expect 等工具结合,实现自动化的远程任务执行,如批量部署、系统维护等。 6. **版本与实现**:SSH 有多个版本,如 SSH1 和 SSH2,其中 SSH2 更安全且更常用。此外,不同的开源...
这里提到的"autoSSHKey"可能是一个用于批量生成和部署SSH密钥的脚本或者工具。 实现批量等效性配置的步骤如下: 1. **生成SSH密钥对**:在每个用户的本地机器上,使用`ssh-keygen`命令生成公钥和私钥。例如: ```...
4. **自动化脚本**:生成SSH连接脚本,支持批量执行命令或者文件传输。 5. **公钥部署**:自动将公钥复制到远程服务器的authorized_keys文件,实现无密码登录。 6. **安全审计**:检查SSH配置的安全性,比如避免使用...