比如下面脚本用来做ssh无密码登陆,自动输入确认yes和密码信息,用户名,密码,hostname通过参数来传递
ssh.exp
#!/usr/bin/expect set timeout 10 set username [lindex $argv 0] set password [lindex $argv 1] set hostname [lindex $argv 2] spawn ssh-copy-id -i .ssh/id_rsa.pub $username@$hostname expect "yes/no" send "yes\r" expect "password:" send "$password\r" expect eof
执行脚本./ssh.exp root pasword hostname1
expect接收参数的方式和bash脚本的方式不太一样,bash是通过$0 ... $n 这种方式,而expect是通过set <变量名称> [lindex $argv <param index>],例如set username [lindex $argv 0]
相关推荐
- `[args]` 是传递给脚本的参数。 #### 3.2 选项 - `-c`: 从命令行执行 Expect 脚本,而不是从文件中读取。 - `-d`: 输出调试信息,帮助调试脚本。 **示例**: 使用 `-c` 选项直接从命令行执行简单的脚本: ```...
`$argc`变量表示传递给脚本的参数个数,`$argv`是一个列表,包含了所有参数。可以通过`[lindex $argv 0]`来获取第一个参数。 **结束脚本**: ```tcl expect eof exit ``` `expect eof`等待子进程结束,然后脚本退出...
- `args`:传递给脚本的参数。 #### 三、Expect的关键功能 1. **spawn**:用于启动一个新的进程或程序。 2. **send**:发送字符串到由spawn创建的进程中。 3. **expect**:等待特定的模式出现,并进行相应的操作。...
使用expect脚本时,有时需要保留命令行参数不做解释。通过在脚本中处理`argv`数组,可以将这些参数传递给脚本: ```bash $expect print_cmdline_args.exp -d -c ``` 这些小技巧将帮助你更好地掌握expect的用法...
## 2号脚本需要传递一个主机名参数,同时按照模板格式编辑host.ini文件 ## 使用4号脚本之前,需要先执行3号脚本安装expect命令和gcc ## 4号脚本多个ip之间使用逗号分割,最后一个参数为服务器密码 ## 5号和6号脚本...
Linux中的`expect`工具是一个强大的自动化脚本工具,主要用于与命令行交互,特别是与需要用户输入的程序进行自动化通信,如...在编写`expect`脚本时,可以根据实际需求灵活组合这些命令和参数,实现复杂的自动化任务。
从标题“linux-expect”及描述“这个是一个不错的expect脚本文档学习典例,大家可以下载学习。”中可以看出,这份文档是关于如何在 Linux 系统中使用 Expect 脚本来自动化交互式任务的一个学习资源。 ### 一、...
- `[cmdarg]`:调用命令时传递参数的方式。 - **字符串处理**: - `"somestuff"`:使用双引号定义字符串。 - `"$var"`:在字符串中插入变量值。 - `{somestuff}`:另一种定义字符串的方式,在这种情况下,花...
8. **$argv**:这是一个参数数组,用于接收从bash传递给Expect脚本的参数。可以通过索引访问,如`[lindex $argv 0]`是第一个参数,`[lindex $argv 1]`是第二个参数。 ** Expect语法 ** Expect脚本可以使用单分支或...
expect脚本使用spawn命令启动SCP进程,然后通过expect捕获并响应SCP的输出,例如确认密钥("(yes/no)?")和输入密码。 批量执行SCP任务则需要一个shell脚本来循环调用expect脚本,遍历包含远程服务器信息(IP、...
### 一、单独写一个expect脚本 创建一个单独的expect脚本,例如`auto_scp.sh`。在脚本中,我们定义了服务器的IP地址、端口、目录、用户名和密码,然后使用`spawn`启动SCP命令,接着使用`expect`来匹配和响应登录...
7. `interact` 命令:在某些情况下,可能希望在 Expect 脚本执行完一部分后将控制权交还给用户,`interact` 就能做到这一点,让用户可以直接与被启动的进程进行交互。 在给出的代码示例中,可以看到 Expect 如何与...
这些参数作为命令行参数传递给脚本。 2. 设置超时:`set timeout 10` 表示如果在10秒内没有接收到预期的响应,脚本将终止。 3. 启动 Telnet 进程:`spawn telnet $ip` 创建一个新的 Telnet 进程,连接到指定的IP...
- **实例二**:向expect传递参数。`$argc`表示参数数量,`$argv`存储参数值,通过索引获取具体参数。这里展示了如何通过expect进行SSH登录并自动输入密码。 - **实例三**:批量自动化推送SSH公钥。这个例子展示了...
- `expect`实现脚本与交互式程序的交互。 7. 数组: - 数组是一组相关数据的集合,包括索引数组和关联数组。 - 数组声明、赋值、显示、引用和删除有特定方法。 8. 字符串处理: - 字符串切片、查找替换、删除...
1. **Expect 单台服务器 SCP 传输脚本**: 在提供的 `/root/soft_shell/allscp.sh` 脚本中,Expect 被用来自动化 SCP 命令的交互过程。脚本接受五个参数:源文件、用户名、主机IP、目标文件和密码。首先,它检查...
通过命令解析的方式调用`ssh_auto_login`脚本,并传递相应的参数。用户可以通过简单的命令选择需要登录的服务器。 #### 四、应用场景与注意事项 1. **自动化批量操作**:结合脚本与批量处理技术,可以在无人值守的...
标题中的"expect自动检测并重启另外一台服务器上的程序代码"是指使用expect脚本实现远程监控和自动重启另一台服务器上的特定程序。这个场景常见于分布式系统或负载均衡环境中,例如在本例中,程序是haproxy,一个...
示例脚本中展示了如何通过传递用户名和新密码作为参数来调用`passwd`命令。 第二步是确保PHP脚本有权限执行需要root权限的命令。这通常通过`sudo`来实现。`sudo`允许非root用户以超级用户权限运行指定的命令。我们...
在IT行业中,shell脚本是Linux/Unix系统管理员不可或缺的工具之一,特别是在处理批量任务时。...不过,使用时也需注意安全性,例如不要在脚本中直接硬编码敏感信息如密码,而是考虑使用安全的方式传递或存储这些信息。