轻松自动化:学习使用 Linux 脚本 expect (linux 脚本 expect)

随着现代技术的发展,计算机日益普及,人们日常使用计算机的时间也越来越长,计算机的操作与管理也越来越复杂。因此,轻松自动化已经成为计算机管理、操作的重要手段之一。在这个过程中,学习使用 Linux 脚本 expect,不仅可以提高计算机操作效率,还可以减少犯错的可能性,为我们的工作和生活带来便利。

那么,什么是 Linux 脚本 expect 呢?它可以实现什么样的功能呢?

Linux 脚本 expect 是一种自动化脚本语言,它能够自动完成一些重复性、繁琐的操作,同时也可以实现大批量、自动化运维管理,大幅度提高工作效率。expect 在 Linux 系统中被广泛应用,比如:在 SSH、Telnet、FTP、scp 等程序中,使用 expect 就可以写出简洁,高效的自动化操作脚本,使人工管理变得简单、高效。

那么如何学习 expect 呢?

我们需要了解 expect 的基本用法。

expect 主要由 expect 和 send 两个命令组成。expect 负责捕捉需要处理的信息,send 负责处理要发送的信息。

expect 命令语法格式如下:

`expect [-bvd] [-c cmds] [-f file] [-i id] [-l var] [-n] [-p pat] [-q] [-t sec] [timeout] [cmds]`

其中,-b 选项表示将 expect 进程转换为一个背景作业,-c 选项表示在命令行中直接执行 cmds 命令,-f 选项表示从 file 文件中读取 cmds 命令。-i 选项表示使用指定的系统调用,-l 选项指定变量名,以便在 expect 中使用全局变量。-p 选项表示在等待指定的模式时不回显,-q 选项表示退出 expect 并返回一个退出值,最后三个选项与目标主机的交互有关。

send 命令语法格式如下:

`send [-s string] [-h] [-p] [-i id] [-l] [-n] [–] string …`

其中,-s 选项表示停止字符串。-h 选项表示仅发送字符串。-p 选项表示不写回自己,-i 选项表示输出的 ID。-l 选项表示发送时使用的延迟。-n 选项表示在数据流结束前不要发送换行符。string 参数表示要发送的字符串。

接下来,我们来看看一个简单的 expect 脚本的编写。

expect

expect “password:”

send “123456\n”

expect

以上脚本的意思就是,当程序运行到 password: 时,自动输入密码 123456 并执行回环函数,退出 expect。

除了以上这个简单的例子外,还有很多实用的 expect 脚本编写方法。

比如,我们可以使用 expect 进行多服务器密钥批量分发。

#!/bin/bash

username=”root”

password=”123456″

ip_list=(“192.168.10.21” “192.168.10.22” “192.168.10.23”)

for ip in ${ip_list[@]}

do

expect

spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $username@$ip

expect {

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

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

}

expect eof

EOF

done

以上脚本的功能是批量将公钥推送到多台服务器上,以便进行密码-less 登陆。

此外,expect 还可以用于自动化 FTP 文件上传、Telent 自动登录等等。上面的例子仅仅是为了说明 expect 的基本用法,实际使用中还需要根据具体需求进行变化。

学习使用 Linux 脚本 expect 可以让我们的工作更加高效、便捷,为我们的生活和工作带来便利。在使用 expect 过程中,我们需要注重实践,多多发挥自己对脚本的理解和想象力,可以在学习过程中挖掘出更多 expect 的奥秘。

相关问题拓展阅读:

linux 使用expect脚本ssh到远程无法使用RZ为什么

因为网络中断相当于跑程序的控制台关闭。这时控制台里的程序会被关闭。

你可以用nohup 程序名销晌轿 &,这样即使控制台关闭谨茄程序亏肆照样在后台运行。

linux下用expect spawn时的问题

*.log 是shell中的用法,

scp或者其他命令本身并不直接将 * 替换成匹配的多个滚手文件名。

建议你将 expect 脚本做成一次只上传一个文件,这个文件名由输入参数来决定

scp :/home

expect “password:” {send “\n”}

interact

然后再写一个bash脚本,脚本调用上面的expect脚本来上传所有的文件,如:

for f in `ls /log/*.log`

do

expect_script /log/$f

done

即可。

另,像这陪仿种备份文件,用大乱嫌 rsync 更方便,供参考。

可以使用如下方法

1. 在客户机上产生一对密钥:

#ssh-keygen -d #产生dsa密钥孝谈

或者:

#ssh-keygen -t rsa #产生rsa密钥

2. 在服务器上建立目录 /root/.ssh,并设则毁置权限:

#chmod/root/.ssh

3. 把客户机上生成的公钥拷贝到服务器的/root/.ssh目录下:

#scp /root/.ssh/id_dsa.pub root@服务器IP:/root/.ssh/authorized_keys

或孙慎备者:

#scp /root/.ssh/id_rsa.pub root@服务器IP:/root/.ssh/authorized_keys

4. 这样,就可以从客户机直接登入ssh服务器,而不需要密码了,可使用的命令包括ssh, scp和sftp。例如:

关于linux 脚本 expect的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 轻松自动化:学习使用 Linux 脚本 expect (linux 脚本 expect)