简单高效!exp技巧:批量登录服务器省时省力 (exp 批量登录服务器)

简单高效!Exp技巧:批量登录服务器省时省力

对于那些经常需要工作在不同的服务器上的人来说,服务器的登录操作是非常频繁的,然而每次登录操作都需要一个个的输入用户名和密码,这样的过程十分繁琐且耗费时间。如果你是这样的一名用户,那么你一定非常期待有一些技巧来简化这些重复的操作。事实上,Exp技巧可以帮助你省时省力地批量登录服务器。

Exp (Expect Programming)是一种快速编写自动化交互性质应用程序的脚本语言。Exp可以模拟用户对终端命令行和图形用户界面 (GUI) 程序的交互操作。在本篇文章中,我们将使用Exp技巧实现批量登录服务器操作的自动化。

步骤一:配置SSH密钥

我们需要在本地主机上创建SSH密钥。直接使用用户名和密码登录每个服务器是不安全的,因此我们使用SSH密钥代替用户名和密码进行登录。

使用以下命令创建SSH密钥:

“`ssh-keygen -t rsa“`

在随后的提示中输入文件名和密码即可。然后将公钥文件(.ssh/id_rsa.pub)的内容复制到所有要登录的服务器的authorized_keys文件中。

步骤二:安装Expect工具

Expect工具常常被用于编写交互脚本。它可以模拟人类交互式的输入输出,实现自动执行交互性质应用程序的目的。安装Expect是使用Exp技巧的前提,所以我们需要先安装Expect工具。

以下是在Ubuntu系统上安装Expect工具的命令:

“`sudo apt-get install expect“`

步骤三:编写Exp脚本

下一步,我们需要编写Exp脚本,这里我们先使用一个简单的脚本来让你了解Exp脚本的基本结构。复制以下内容到文件batch_login.exp中:

“`#!/usr/bin/expect

set timeout 10

set host [lindex $argv 0]

set user [lindex $argv 1]

set password [lindex $argv 2]

spawn ssh $user@$host

expect {

“*yes/no” { send “yes\r”; exp_continue }

“*password:” { send “$password\r” }

}“`

以上脚本主要实现以下目标:

1. 设置超时时间(time-out)为10秒;

2. 接受三个参数:主机名,用户名和密码;

3. 使用spawn命令启动ssh命令,连接到指定的服务器;

4. 当出现yes/no提示时发送yes,以允许连接;

5. 当出现password提示时发送密码。

步骤四:批量登录服务器

在编写了Exp脚本之后,我们就可以使用它来批量登录服务器了。有两种方法可以实现批量登录。

方法一:使用for循环来实现批量登录

我们可以使用for循环遍历要登录的服务器列表,并将主机名、用户名和密码作为参数传递到Exp脚本中。以下是使用for循环实现批量登录的命令:

“`for i in 192.168.1.2 192.168.2.3 192.168.3.4

do

expect batch_login.exp $i username password

done“`

以上命令中,我们遍历了三个服务器,将它们的名称以及用户名和密码传递给Exp脚本,完成批量登录操作。

方法二:使用列表变量来实现批量登录

另一种方法是在一个变量中定义所有要登录的服务器。这种方法需要先将服务器名称写进一个列表变量,然后在Exp脚本中循环遍历该列表变量。以下是使用列表变量来实现批量登录的命令:

“`hosts=(192.168.1.2 192.168.2.3 192.168.3.4)

for host in “${hosts[@]}”

do

expect batch_login.exp $host username password

done“`

以上命令中,我们定义了列表变量hosts,包含了所有要登录的服务器,然后在遍历列表变量时将主机名、用户名和密码作为参数传递给Exp脚本,实现批量登录操作。

结语

使用Exp技巧可以帮助你省时省力地批量登录服务器。本文介绍了使用Exp脚本来实现批量登录的方法,其中包括配置SSH密钥、安装Expect工具和编写Exp脚本。通过这些步骤,你可以轻松地登录多个服务器,同时也可以减少重复的操作,提高工作效率。

相关问题拓展阅读:

Linux/Aix系统下使用expect和passwd命令批量修改用户,遇到的问题

秦时明月汉时关,万里长征人未还.

过其中一台服务器ssh到其他服务器

linux服务器中如何登陆另一台Linux服务器中的Oracle数据库进行全库备份?

1、你可以在数据库A做计划任务,用exp或者expdp导出,然后scp或者rsync到服务器B

例如计划任务0 0 * * * /data1/backup/expdp_db_bak.sh;

expdp_db_bak.sh内容:

#!/bin/sh

. ~/.bash_profile

dst=/data1/backup/db_bak

today=`date +%F`

bakfile=expdp_db_${today}.dmp

logfile=expdp_db_${today}.log

expdp ‘user01/778899’ DIRECTORY=expdp_dir1 parallel=2 \

dumpfile=$bakfile SCHEMAS=user01 logfile=$logfile COMPRESSION=all

scp -P22 $bakfile :/data1/backup/db_bak

exit 0;

2、带坦也可以在服务器B用exp直接导出数据

exp ‘user01/778899@DB01’ file=$bakfile FULL=Y log=bak.log

3、开启归档模式,在服务器A用rman 做全备或增量蠢灶桐备份,然后将备份同步到服务器B

指定路径

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ‘/data1/rman/full_%d_%U’辩悔;

全备份,默认Format

backup incremental level 0 database;

增量备份

backup incremental level 1 database;

将备份rsync 到服务器B

/usr/bin/rsync -av ‘-e ssh -p 22’ :/data1/rman /data1

4、开启归档模式,在服务器AB间配置DATAGURAD,同步数据

dataguard,stream replication,goldengate…..

方法很多,看你具体需求了

exp 批量登录服务器的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于exp 批量登录服务器,简单高效!exp技巧:批量登录服务器省时省力,Linux/Aix系统下使用expect和passwd命令批量修改用户,遇到的问题,linux服务器中如何登陆另一台Linux服务器中的Oracle数据库进行全库备份?的信息别忘了在本站进行查找喔。


数据运维技术 » 简单高效!exp技巧:批量登录服务器省时省力 (exp 批量登录服务器)