2011-08-11 3 views
0

私は期待/卵を使用してシェルを実現し、それが必要とされるときに自動的にパスワードを送信し、リモートサーバからSCPファイルにコマンドを送信します。コールCでスクリプトを「期待する」++プロセス

スクリプトは、UNIX端末上で正常に動作します。

それにもかかわらず、私はC++プロセスthrooughこのスクリプトを使用しようとしました。それはsystem()またはpopen()関数によってさえ、成功なしで呼び出されています。 このエラーが返されます。「のioctl(生):I/Oエラー」 誰かが任意の手掛かりを持っているだろうか?

これは私のスクリプトです:

#! /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 $password\r; interact } 
    eof { exit } 
} 

(とにかく問題を引用することが表示されます)私が試してみた最初のものは、bashスクリプトを捨てることです

#!/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 
     " 

答えて

0

しかし、本当の問題があります標準入出力チャネル/ PTYが期待プロセスによって継承されますどのようにあなたの答えのための

+0

おかげで、あなたの応答とあなたの補正のための – vince31

+0

おかげで(私はここで、適切な用語のかわかりません)。 私はこの問題を簡単に解決することを期待していませんでしたが、そうしました。 あなたは完全に私の問題を解決し、私は今 乾杯グレン前方に行くことができます。 – vince31

関連する問題