我使用expect/spawn 实现了一个shell,并从远程服务器向SCP 文件发送命令,该服务器在需要时自动发送密码。
该脚本在 UNIX 终端上运行良好。
尽管如此,我还是尝试通过 C++ 进程来使用这个脚本。它已被 system() 甚至 popen() 函数调用但没有成功。返回此错误:“ioctl(raw): I/O error” 有人可能有任何线索吗?
这是我的脚本:
#!/bin/bash
targetHost=$1
password=$2
sourceFile=$3
destRep=$4
expect -c "
spawn /usr/bin/scp -q $targetHost:$sourceFile $destRep
expect -i $spawn_id {
"*password:*" { send -i $spawn_id $password\r\n; interact }
eof { exit }
}
exit
"