Cプログラムを使用して、Linuxからいくつかのpowershellスクリプトを自動的に実行しようとしています。libexpectを使用してコマンドを Windows に送信し、powershell 端末のファイル記述子を取得し、それに書き込み、powershell スクリプト/コマンドを実行しています。それは正常に動作します。しかし、私の要件は、C プログラムから powershell スクリプトの出力を読み取れるようにすることです。
C プログラムは次のようになります。
fd = exp_spawnl( "sh", "sh", "-c", "telent -l username machine", (char*)0);
exp_expectl( fd, exp_glob, "password: ", 1, exp_end);
write(fd, "password\r", NUM_BYTES);
exp_expectl( fd, exp_glob, ".*>", 1, exp_end);
write(fd, "powershell \path\script.ps1\r", NUM_BYTES);
上記のように、powershell script.ps1
Windows で実行されている stdout/stderr を取得することはできません。
linux-windows-powershell-linux のセットアップ全体は、ローカル ネットワークにあります。したがって、現時点では telnet の使用についてあまり心配していません。しかし、私は自分の目標を達成するのに役立つあらゆるソリューション (ssh であろうとなかろうと) に対してオープンです。
代替オプションがある場合は、libexpect も使用しないことにオープンです。基本的に、このアプローチでは何でも変更できます。ユーザー名/パスワードとコマンドをリモートシェルに送信する他の方法を認識していないため、これを使用しています(libexpect)。
私の主な目的が満たされている限り、Linuxでexpect / bashスクリプトを作成するか、Windowsでオンザフライのpowershellスクリプトを作成することについての提案を受け入れます。つまり、powershellスクリプト/コマンドを自動的に実行し、それらのstdoutとstderrを取得して終了します状態$?
。ファイルポインター自体は必要ないことに注意してください。( bashのように)値を取得できれば非常に満足です。char[]
OUTPUT=$(ls)