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

San*_*ath 4 linux shell bash

我是我的 shell 脚本,我正在尝试删除scp命令的密码提示(如/sf/ask/32142771/#459225 中所示)这就是我到目前为止所拥有的:-

#!/usr/bin/expect
spawn scp $DESTINATION_PATH/exam.tar $SSH_CREDENTIALS':/'$PROJECT_INSTALLATION_PATH
expect "password:"
send $sshPassword"\n";
interact
Run Code Online (Sandbox Code Playgroud)

在运行脚本时,我收到错误

spawn: command not found
send: command not found
interact: command not found
Run Code Online (Sandbox Code Playgroud)

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

Phi*_*l P 13

您正在错误地调用脚本。

如果你说:

bash scriptname
Run Code Online (Sandbox Code Playgroud)

然后 #! 行被忽略,bash 将文件视为 bash 指令。但这不是一个 bash 脚本,它是一个期望脚本。

这 #!line 只有在将脚本作为命令以自己的方式运行时才会被内核解释。

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


小智 8

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

    # 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