问题描述
我正在尝试从另一个脚本调用脚本,因为我正在使用“spawn”(来自 expect 数据包)来执行到另一台机器的 SSH。基本上,在我的主脚本 (scriptA.sh) 中执行比较和例程后,它会调用另一个脚本 (scriptB.sh)。调用工作正常,因为我可以看到 SSH 已正确执行。但是,由于并非所有命令都正确执行,因此看起来有些错误。如果我手动执行这些命令,它会起作用。
我在一台有时会冻结并显示全白屏幕的机器上运行一个应用程序。 scriptB.sh 杀死 Firefox 并在后台重新打开浏览器。如果我手动执行这些命令,它们就可以正常工作:
- sudo killall firefox
- export disPLAY=:0.0(我不需要“sudo”)
- /usr/local/bin/run_digital_signage_firefox.sh&(此命令必须在没有“sudo”的情况下运行)
这是我的 scriptA.sh 的一个非常小的简历(我像这样执行这个脚本:sudo ./scriptA.sh):
#!/bin/bash
...something....
export username
export password
export IP
sh /home/mydirectory/scriptB.sh
...something....
这是我的 scriptB.sh(我在 scriptA.sh 中使用“export”传递用户名、密码和 IP):
#!/bin/bash
/usr/bin/expect << EOF
spawn ssh test@$IP "sudo killall firefox && export disPLAY=:0.0 && /usr/local/bin/run_digital_signage_firefox.sh&"
sleep 3
expect "*?ame:*" {
send "$username\r"
sleep 2
expect "*?assword:*"
send "$password\r"
sleep 2
expect "\r"
sleep 2
}
expect "*?(yes/no)*" {
send "yes\r"
sleep 2
expect "*?ame:*"
send "$username\r"
sleep 2
expect "*?assword:*"
send "$password\r"
expect "\r"
sleep 2
}
EOF
当 scriptA.sh 调用 scriptB.sh 时,它似乎可以杀死 firefox 浏览器,但不能使用命令“/usr/local/bin/run_digital_signage_firefox.sh&”对其进行初始化。我必须在没有 sudo 的情况下运行此命令,但即使我尝试在 scriptB.sh 的 SSH 中添加“sudo /usr/local/bin/run_digital_signage_firefox.sh&”,它也无法正常工作。似乎脚本既没有执行“/usr/local/bin/run_digital_signage_firefox.sh&”,也没有执行“sudo /usr/local/bin/run_digital_signage_firefox.sh&”。我需要执行脚本的最后一部分才能再次打开 Firefox 浏览器。
两个脚本在 ugo 中都有 rwx 权限。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)