expect

如何在 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

如何通过 shell 脚本将插座电源切换至 Eaton ePDU G3
expect

如何通过 shell 脚本将插座电源切换至 Eaton ePDU G3

我正在尝试通过 Jenkins CI shell 脚本使用 ssh 以编程方式切换 Eaton ePDU G3 上的多个插座的电源。这是为了仅在 Jenkins 运行期间启动激光雷达。目前还不清楚如何做到这一点。 ...

Admin

具有基于主机 IP 地址的 if/else 逻辑的 TCL/Expect 脚本
expect

具有基于主机 IP 地址的 if/else 逻辑的 TCL/Expect 脚本

因此,我一直在使用 /usr/bin/expect 编写脚本,并且非常喜欢它,因为它可以自动完成我的用户名和密码,从而让我快速登录到服务器。通过粗略阅读,我了解到它基本上是 TCL 的超集,我承认我对它一无所知。 我经常使用 MacBook Pro 通过 ssh 访问我的服务器,我想进一步改进我的登录脚本,如果我在家庭网络上(RFC-1918 IP 空间为 192.168.0.0/24),它就会以一种方式登录到我内部网络上的 NAS,如果我不在该网络上,它就会以另一种方式从外部登录。基本上是一个 if-else 条件。 返回当前 IPv4 主机地址的命令...

Admin

使用 expect 尝试一系列密码
expect

使用 expect 尝试一系列密码

我对使用“expect”完全陌生,显然对它一点也不了解。我的问题是,不久前我使用“encfs”保护了一些文件,虽然我给自己留下了一个文本文件,其中包含有关密码的模糊提示,但我记不住/猜不出来。所以,我很确定它是一系列大约一百种排列中的一种,我认为使用 expect 来尝试它们会很容易。到目前为止,也没有运气! 我认为 expect 有一种脚本语言,但是我不知道它在哪里定义(并且我希望不要为了这个而学习一整门编程语言!) 无论如何,我通过复制猜测和调整创建了这个脚本: #!/usr/bin/expect set password [lindex $arg...

Admin

预计不会退出非零值
expect

预计不会退出非零值

我真正的目标是编写一个脚本,该脚本将在本地运行以通过 ssh 连接到远程服务器,重新启动 tomcat,并用于expect等待“服务器正在启动”消息,或者在启动失败时退出非零值。我的尝试是这个脚本。我使用 localhost 进行调试,并使用 INFO 而不是“启动失败”来人为触发退出: ssh -T localhost <<SSH_EOF docker restart app expect <<EXPECT_EOF set timeout 30 spawn docker logs --since 1s -f app expect_...

Admin