我目前正在尝试使用带有shell脚本和expect包的scp命令自动执行文件传输。基于我所看到的,似乎我应该拥有
#!/usr/bin/expect -f
但是当我这样做时,我仍然得到错误:
DirectoryChange.sh: line 33: spawn: command not found
couldn't read file "*Password:*": no such file or directory
DirectoryChange.sh: line 35: send: command not found
DirectoryChange.sh: line 36: interact: command not found
我的代码就是这样做的:
#!/usr/bin/expect -f
repository=$PWD"/subdirectory/"
set pass "***********"
cd $repository
spawn scp -r user@host:/copyDirectory/ .
expect "*Password:*"
send "${pass}\r";
interact
答案 0 :(得分:1)
将密码存储在脚本或任何其他文件中是一种不好的做法。请改用SSH身份验证密钥。
答案 1 :(得分:0)
看起来您正在调用sh DirectoryChange.sh
之类的期望脚本。显然,sh
不是 expect 脚本的正确解释器。
./DirectoryChange.exp
repository=$PWD"/subdirectory/"
不是如何在expect中分配变量。删除此行并将cd
行修改为cd subdirectory
expect eof