Articles of 期待

为什么我的git没有自动更新Expect脚本?

我想创build一个脚本来更新我所有的GitHub仓库。 我只需要input我的用户名和密码,脚本将通过一个存储库列表,调用git push并通过补充的Expect脚本提供必要的信息。 这是我的bash脚本: #! /bin/bash echo "Updating GitHub projects from project_list.txt." echo read -p "GitHub username: " un read -p "GitHub password: " -s pw echo echo while read line do eval dir=$line echo "Updating:" $dir"." cd $dir $SF/githubexpect $un $pw echo echo done < $SF/project_list.txt $SF是一个全局环境variables,包含我的脚本文件夹的绝对path。 这是githubexpect脚本: #! /usr/bin/expect set un [lindex $argv […]

期望实用工具从jenkins执行时不工作

我们有一个使用expect实用程序进行交互式执行的unix脚本。 当我们从unix服务器运行时,这个脚本运行良好。 如果我们从jenkins运行这个脚本,它不起作用。 以下是脚本 var="xxxxx" expect -c " spawn sudo cp /abcd/sjws/config/obj.conf /abcd/sjws/config/obj.conf_jenkins expect { "Password:" { send $var\r;interact } } exit " 下面是我们从jenkins运行的输出 spawn sudo cp /abcd/sjws/config/obj.conf /abcd/sjws/config/obj.conf_jenkins Password: Password: Build step 'Execute shell' marked build as failure Finished: FAILURE

如何使用期望与可选的提示?

假设我正在为一个test.sh编写一个期望脚本,它有三个提示:prompt1,prompt2,prompt3。 我的代码是这样的: spawn test.sh expect "prompt1" send "pass1" expect "prompt2" send "pass2" expect "prompt3" send "pass3" 但是,提示2只发生一半的时间。 如果prompt2不显示,期望脚本中断。 如果不显示,我将如何编写期望代码跳过prompt2? 编辑: 修正了我的代码: /usr/bin/expect -c ' spawn ./test.sh expect { "prompt1" { send "pass1\r" exp_continue } "prompt2" { send "pass2\r" exp_continue } "prompt3" { send "pass3\r" exp_continue } } interact return “ 这样,脚本的其余部分就执行并提供输出。

隐藏期望的输出

这是预期脚本的一部分 #/usr/bin/expect spawn -noecho kwalletcli -f Passwords -e keyofmypassword expect ".*" set passwd $expect_out(buffer) # do some thing # … 它从kwalletcli读取密码,并存储在variablespasswd 。 所以我可以用这个passwd连接到服务器。 然而,kwalletcli的输出是通过期望并在控制台上显示的。 我怎样才能隐藏

与期望产卵的pipe输出

我有脚本通过ssh复制一些文件到其他服务器。 我使用tar压缩文件到farchive并从其他机器上的标准输出解压缩。 set timeout -1 # user info set port [lindex $argv 0] set login [lindex $argv 1] set password [lindex $argv 3] set host [lindex $argv 2] #tar info set sdir [lindex $argv 4] set ddir [lindex $argv 5] spawn tar cf – $sdir | ssh -p $port $login@$host tar xf – -C $ddir […]

如何使用Expect自动化Telnet会话?

我正在尝试编写一个expect脚本来自动化telnet。 这是我迄今为止。 #!/usr/bin/expect # Test expect script to telnet. spawn telnet 10.62.136.252 expect "foobox login:" send "foo1\r" expect "Password:" send "foo2\r" send "echo HELLO WORLD\r" # end of expect script. 基本上,我想要做的是telnet到下面的IP地址,然后回应HELLO WORLD。 但是,似乎脚本尝试telnet后失败…我不知道它是否能够接受login名和密码input,但它不是呼应HELLO WORLD。 相反,我只是得到这个输出: cheungj@sfgpws30:~/justin> ./hpuxrama spawn telnet 10.62.136.252 Trying 10.62.136.252… Connected to 10.62.136.252. Escape character is '^]'. Welcome to openSUSE 11.1 – Kernel […]