linux - 期望脚本中的 sudo 问题

标签 linux shell expect sudo

我正在运行以下脚本

#!/usr/bin/expect -f

set user [lindex $argv 0]
set pass [lindex $argv 1]
set PATH [lindex $argv 2]
set INV_PATH [lindex $argv 3]

spawn ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@localhost

expect "assword: "
send "$pass\r"
expect "$ "
send "echo $pass | /usr/local/bin/sudo -S $INV_PATH/orainstRoot.sh\r"

expect "$ "
send "cd $PATH/bin\r"

expect "$ "
send "echo $pass | /usr/local/bin/sudo -S cp oraenv coraenv sqlplus dbhome /usr/bin\r"

expect "$ "
send "echo $pass | /usr/local/bin/sudo -S $PATH/root.sh\r"

expect "Check"
send "\r"

在某些机器上运行良好,但对于某些机器它会抛出以下错误...我已经检查过,它不是导致问题的路径。

/usr/local/bin/sudo: /scratch/prod_sw/app/oraInventory/orainstRoot.sh: command not found
$ echo PASSWD | /usr/local/bin/sudo -S cd /scratch/prod_sw/app/prod_sw/product/11.2.0/db_home/bin
/usr/local/bin/sudo: cd: command not found
$ echo PASSWD | /usr/local/bin/sudo -S cp oraenv coraenv sqlplus dbhome /usr/bin
cp: cannot stat `oraenv': No such file or directory
cp: cannot stat `coraenv': No such file or directory
cp: cannot stat `sqlplus': No such file or directory
cp: cannot stat `dbhome': No such file or directory
$ echo PASSWD | /usr/local/bin/sudo -S /scratch/prod_sw/app/prod_sw/product/11.2.0/db_home//root.sh
Check /scratch/prod_sw/app/prod_sw/product/11.2.0/db_home/install/root_slcad22rhu_2013-07-22_04-41-49.log for the output of root script

最佳答案

尝试给出这些文件的完整路径并检查一次。

cp /path/oraenv /path/coraenv /path/sqlplus /path/dbhome /usr/bin

关于linux - 期望脚本中的 sudo 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17786815/

相关文章:

linux - 是否有允许将当前行评估为 bash 命令的编辑器?

linux - 为什么 `xargs head` 打印文件名?

linux - 运行 Bash 脚本,后跟关键字或变量

bash - 期望在 bash 中对 ssh 密码进行异常处理

c++ - 无法使 getnameinfo 处理我的 UDP 代码

linux - 使用 datadog 导入指标时出现问题

linux - 没有相关信息的 GDB 调试跟踪(#0 0x2e6e6f69 in ?? ())

linux - 如何使用 bash 别名作为命令行参数

Java TelnetClient 在 “press any key to continue” 挂起

python - 为什么这是漏洞利用的结构