1

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.ps1Windows で実行されている stdout/stderr を取得することはできません。

linux-windows-powershell-linux のセットアップ全体は、ローカル ネットワークにあります。したがって、現時点では telnet の使用についてあまり心配していません。しかし、私は自分の目標を達成するのに役立つあらゆるソリューション (ssh であろうとなかろうと) に対してオープンです。

代替オプションがある場合は、libexpect も使用しないことにオープンです。基本的に、このアプローチでは何でも変更できます。ユーザー名/パスワードとコマンドをリモートシェルに送信する他の方法を認識していないため、これを使用しています(libexpect)。

私の主な目的が満たされている限り、Linuxでexpect / bashスクリプトを作成するか、Windowsでオンザフライのpowershellスクリプトを作成することについての提案を受け入れます。つまり、powershellスクリプト/コマンドを自動的に実行し、それらのstdoutとstderrを取得して終了します状態$?。ファイルポインター自体は必要ないことに注意してください。( bashのように)を取得できれば非常に満足です。char[]OUTPUT=$(ls)

4

1 に答える 1