expect

Expect 能否确保某条日志不会出现?
expect

Expect 能否确保某条日志不会出现?

Expect 脚本非常适合编写测试,这些测试基本上是“确保运行此命令会导致打印这些日志”。Expect 可让您跳过不相关的输出并查找日志中的特定行。 有没有办法确保我们不遇到某条信息? 例如,一个简单的 Expect 脚本可能如下所示: spawn ./my_launcher.sh expect "System booted." 有什么办法可以确保我们不在“系统启动。”行出现之前获取某个字符串? 用假想语法来传达我的目标: spawn ./my_launcher.sh expect-not "license activation error" expect...

Admin

在我的终端上重播击键的最佳方法是什么?
expect

在我的终端上重播击键的最佳方法是什么?

我发现自己必须执行一系列操作ssh才能到达特定主机。我现在所做的就是将命令一个接一个地复制并粘贴到终端中,就像机器一样。我想知道是否有办法将这些固定命令重播到我的终端中。 我确实使用过tmux,而且我知道tmux send;但我希望“智能地”执行此操作,即在发送下一个 ssh 命令之前等待提示。我也知道expect,但我见过的用法是终端spawn在脚本内运行并从脚本内进行交互 — 生成的终端随 expect 脚本一起消失。 最理想的情况是,我可以expect在打开的终端上执行该操作。有办法做到这一点吗,或者还有其他方法吗? ...

Admin

期望 spawn 命令:在字符串中转义换行符(\n)
expect

期望 spawn 命令:在字符串中转义换行符(\n)

我正在尝试使用 expect 与 MATLAB 控制台交互。目前我有: #!/usr/bin/expect -f spawn {*}/usr/bin/run.sh matlab -r "fprintf(1, \"The identifier was:%s\\\\n\", \"hello\")" expect { "The identifier is hello" { return } timeout { exit 7 } eof { return } } 但这会出...

Admin

expect -timeout 与 expect 中的“set timeout”:不同的行为
expect

expect -timeout 与 expect 中的“set timeout”:不同的行为

我正在测试一个 expect 脚本,发现使用set timeoutvs时有两种不同的行为expect -timeout。这是一个简单的例子 response.sh: #!/usr/bin/bash sleep 2 echo hello test1.sh: #!/usr/bin/expect spawn ./response.sh set timeout -1 expect { timeout { send_user "timeout\n" } "hello" { send_user "received he...

Admin

如何在 bash 中使用 expect 来自动安装
expect

如何在 bash 中使用 expect 来自动安装

我有一个 bash 来回答以下问题免费文件同步安装过程中使用 expect 进行询问: #!/bin/bash tar -xf FreeFileSync*.tar.gz mv FreeFileSync*.run FreeFileSync.run >/dev/null 2>&1 chmod +x FreeFileSync.run /usr/bin/expect << EOF set timeout -1 log_user 0 spawn ./FreeFileSync.run --accept-license log_user ...

Admin

将 bash 变量传递给 expect 脚本或从 bash 内部编写 expect 脚本
expect

将 bash 变量传递给 expect 脚本或从 bash 内部编写 expect 脚本

此脚本旨在将我家里的服务器内容安装为 mac os 中的可读/可写驱动器。不幸的是,由于我家有一个动态公共 IP 地址,服务器的 IP 地址会不时更改。我的解决方案是通过从文件中读取 IP 地址来使脚本运行。当我仅使用 expect 脚本时,一切都正常工作,但我无法弄清楚如何从 expect 中的文件中读取变量,当我在 bash 中重写 expect 脚本时,它停止工作。这是我的代码: #!/bin/bash file=/Users/cm4nxd/Library/Scripts/current.ip ipaddress=$(<"$file") /u...

Admin

无限循环
expect

无限循环

我希望这个预期脚本永远运行(或者直到打印“ok”),但是它却没有运行,而是立即退出。 #!/usr/bin/expect set timeout 180 spawn ssh -o "StrictHostKeyChecking no" [email protected] expect "password: " send "[lindex $argv 1]\n" expect "$ " send { while true ; do sleep 1s STRLIST=`echo pippo` [[ ${#STRLIST} -ge ...

Admin

带有期望和变量评估的循环
expect

带有期望和变量评估的循环

我想用 expect 和 for 循环远程执行一个脚本: #!/usr/bin/expect set timeout 10 spawn ssh [email protected] expect "password: " send "pass\n" expect "$ " send "for i in `ls` ;\n" send "do\n" send " STRLENGTH=$(echo -n $i | wc -m);\n" send " if [ $STRLENGTH -ge 35 ];\n" send " then echo ...

Admin

在 Bash 脚本中的单行 Expect 命令中设置和使用变量
expect

在 Bash 脚本中的单行 Expect 命令中设置和使用变量

我有一个数组,$HOSTS其中包含一组主机名。我有一个数据库表,其中包含一组 IP 地址。我想遍历该表中的每个 IP 地址并向hostname -s该地址发送命令 (),然后将输出添加到$HOSTS。远程服务器未配置 PKI,并且脚本必须在无人干预的情况下自动运行。这是一个封闭的网络,root 密码作为变量存储在脚本中 ( $SERVERPASSWORD)。在有人说之前,我意识到将 root 密码放在这样的变量中并不是一个好主意,但在这种情况下,与保护 root 密码相比,不进行任何人为交互更为重要。 这是我当前(已清理)脚本的相关部分: for IP...

Admin

预期脚本 - 有时不生成日志
expect

预期脚本 - 有时不生成日志

我有一个简单的预期脚本,它提供 4 次密码。我使用以下方法将输出记录到日志文件中: log_file -a /home/applusr/e291505/logs/ADD.log spawn /home/root/admin/add.mims.user $username "$firstname $lastname" #!/usr/local/bin/expect set username [lindex $argv 0] set firstname [lindex $argv 1] set lastname [lindex $argv 2] set my...

Admin

是否可以使用单独的预期进程分离并重新连接到生成的进程?
expect

是否可以使用单独的预期进程分离并重新连接到生成的进程?

我有一个预期脚本,它会生成一个进程,然后进行一些初始化(身份验证),然后执行一些需要事先身份验证的任务。 考虑扩展脚本以在初始化后执行多个任务,我想知道是否可以使用单独的预期进程来执行每个任务(一旦生成的进程终止,它就需要重新进行身份验证)。 因此这意味着: 首先期望抵押一个进程并进行初始化. 那么 expect 存在,但是使生成的进程保持活动状态。 对于要执行的每个任务:启动另一个 expect 进程重新连接到之前生成的进程。此步骤将根据需要重复多次。 最后一个 expect 重新连接到生成的进程,并执行干净关机这个过程 这可能吗?优点是,对于...

Admin

scp 传输期间 spawn、expect、send 中止
expect

scp 传输期间 spawn、expect、send 中止

我有一个带有 spawn、expect 和 send 的基本 scp 发送机制。 然而它在 scp 传输期间中止了。 这是期望命令: expect -c "spawn sh -c {scp -r -P 22 /tmp/rootfs/* root@IP:/.} expect { password: {send \"pw12\r\"; exp_continue } } exit" 这在 scp 传输期间被中断。 但是如果我尝试这样做: scp -r -P 22 /tmp/rootfs/* root@IP:/. 它会要求输入密码,然后我输入密码,...

Admin

如何让我的 expect 语句不输出第一个命令的标准输出?
expect

如何让我的 expect 语句不输出第一个命令的标准输出?

我试图执行一个 ssh 命令来打印出/etc/shadow文件。显然该文件需要 root 或sudo权限,而我没有 root 凭证,因此我必须使用sudo。 这是我制定的命令: expect -c 'spawn -noecho ssh -q -t -S /tmp/t2.ssh dummy "sudo cat /etc/shadow";expect "assword"; send "password99\r";interact' 它输出的正是我需要的内容,但它还在第一行输出 sudo 密码的提示: [sudo] password for stud...

Admin

Bash 自动化 SFTP 脚本偶尔不会移动最后一个文件
expect

Bash 自动化 SFTP 脚本偶尔不会移动最后一个文件

我开发了一个 bash 脚本,仅当远程服务器中有特定 CSV 时才将文件移动到 FTP。另一个数据质量工具的作业调用此脚本。脚本运行良好,但它不会Control_File.csv偶尔移动最后一个文件 () 并退出脚本。很难预测它何时会错过。下面是脚本。有什么想法可以解释为什么它不会偶尔移动最后一个文件吗? 笔记:我无法使用 SSH 密钥,这就是为什么在下面的脚本中使用期望包和屏蔽的服务器详细信息和凭据。 #!/bin/bash today=$(date +"%Y%m%d") LOG_LOCATION="/pken4o/shared/config/dom...

Admin

Obexctl:在终端和脚本中提供不同的结果
expect

Obexctl:在终端和脚本中提供不同的结果

我创建了一个脚本,我想通过蓝牙发送文件。为此,我使用了“obexctl”实用程序。我可以通过终端使用 obexctl 实用程序传输文件。但是当我尝试使用 expect 将其合并到脚本中时,它显示“客户端代理不可用”。 有人能帮我解决代码问题吗?提前谢谢了。 终端命令: $ obexctl [NEW] Client /org/bluez/obex [obex]# connect xx:xx:xx:xx:xx:xx Attempting to connect to xx:xx:xx:xx:xx:xx [NEW] Session /org/blue...

Admin