在进程中调用"expect"脚本C++



我实现了一个shell,使用expect/spawn从远程服务器向SCP文件发送命令,在需要时自动发送密码。

该脚本在UNIX终端上运行良好。

尽管如此,我还是尝试通过c++进程来使用这个脚本。它已经被system()甚至popen()函数调用,但没有成功。此错误返回:"ioctl(raw): I/O错误"有人知道什么线索吗?

这是我的脚本:

 #!/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 $passwordrn; interact } 
          eof { exit }
        }
        exit
        "

我要尝试的第一件事是放弃bash脚本(无论如何似乎都存在引用问题)

#! /usr/bin/env expect -f
foreach {targetHost password sourceFile destRep} $argv break
spawn /usr/bin/scp -q $targetHost:$sourceFile $destRep
expect -i $spawn_id { 
    "*password:*" { send -i $spawn_id $passwordr; interact } 
    eof { exit }
}

但真正的问题是如何通过期望过程继承工作室通道/pty(我不确定这里的适当术语)

最新更新