bash 脚本 - 生成、发送、交互 - 未找到命令错误

bash 脚本 - 生成、发送、交互 - 未找到命令错误

在我的 shell 脚本中,我试图删除scp命令的密码提示(如https://stackoverflow.com/questions/459182/using-expect-to-pass-a-password-to-ssh/459225#459225)这是我目前所得到的:-

#!/usr/bin/expect
spawn scp $DESTINATION_PATH/exam.tar $SSH_CREDENTIALS':/'$PROJECT_INSTALLATION_PATH
expect "password:"
send $sshPassword"\n";
interact

运行脚本时出现错误

spawn: command not found
send: command not found
interact: command not found

我也遇到了错误expect: command not found,然后我意识到路径expect不正确,expect根本没有安装。所以我照做了yum install expect,更正了路径,错误就消失了。但仍然无法删除其他 3 个错误。

答案1

您错误地调用了脚本。

如果你说:

bash scriptname

然后 #! 行将被忽略,bash 将文件视为 bash 指令。但这不是 bash 脚本,而是 expect 脚本。

#! 行仅当脚本作为命令以自行运行的方式运行时才由内核进行解释。

要么授予脚本执行权限,以便您可以调用./scriptname,要么使用expect命令启动脚本。

答案2

  1. 确保之前有“expect”工具,如果没有,请执行此操作

    # apt-get install expect

  2. 创建包含以下内容的脚本文件。(# vi /root/scriptfile)

    spawn scp /path_from/file_name user_name_here@to_host_name:/path_to

    expect "password:"

    send put_password_here\n;

    interact

  3. 使用“expect”工具执行脚本文件

    # expect /root/scriptfile

相关内容