1

だから私は自分の仕事のために開発プロジェクトを行っていました。基本的には、ファイルの解析を行い、新しいファイルを作成し、メインフレームで実行されている Unix スクリプトにファイルの場所を送信する必要がある Excel VBA マクロがあるという考えです。

ファイルの場所は、マクロを実行するたびに異なります。Samba のおかげで、Windows でファイルを作成でき、Unix システムからすぐにアクセスできます。

ここで問題が発生します。ファイルの場所をどのように渡すことができますか。問題は、plink と呼ばれるプログラム (構成ファイルを PC のレジストリではなく、プログラム自体と一緒に置くことを可能にするパテのバージョン) が、この作業を行うための唯一の承認されたオプションです (Cgywin がこれを非常に簡単に行うことはわかっています)。 ) であり、プログラムは複数の人が同時に実行する必要があるネットワーク ドライブ上に置かれます。authorized_keys ファイルには、実行する必要がある Unix スクリプトを指す exec があり、セキュリティ上の理由から、それを変更することはできません。ただし、Unix でスクリプトを記述して、名前のないパラメーターを取得し、それを使用して、パラメーター (ファイルの場所) を名前付きパラメーター (--file=/directory/datafile) としてのみ受け取るスクリプトを実行できます。

(cmdで) plink.exe serverIP /directory/datafile (ログインはすでに構成されています)でそのスクリプトを実行しようとしましたが、どうやらこの方法でパラメーターを渡すことができませんでした。

plink.exe serverIP "/directory/datafile" も試しましたが、運もありません。

これを行うための短くてきちんとした方法があるかどうか疑問に思っています。同様の構成のサンプル プロジェクトがありましたが、これを行うスクリプトは 10,000 行ほどかかりましたが、これは読みたくありません。これは、10 行または 20 行の短いスクリプトのように実行する必要があると思います。プログラムの複数のセッションを異なるパラメータで同時に実行できれば、必要に応じて Windows スクリプトを自由に作成できます。

4

1 に答える 1

3

ssh を使用して別の UNIX マシンで 1 つの UNIX コマンドを実行するのと同じように、plink を使用して Unix マシンでコマンドを実行できるはずです。例えば

plink user@host "ls"

実行lsされますhost

同じく:

plink user@host "/absolute/path/to/script/on/unix/machine/script.sh"

で実行script.shする必要がありますhost。Unix マシンでローカルに実行するコマンドを作成し (データ ファイルへのパス名など、スクリプトへの引数を含む)、上記のように plink を使用してコマンドを実行できます。

パラメータがあり、読み込まれない場合script.shは、スクリプト名とパラメータの両方を一重引用符で囲んでみてください。

plink user@host "'/absolute/path/to/script/on/unix/machine/script.sh arg1 arg2'"

ここにある plink のドキュメントを参照してください: http://the.earth.li/~sgtatham/putty/0.62/puttydoc.txt

特にセクション 7.2.2 - 「自動接続に Plink を使用する」を参照してください。

于 2012-05-12T16:54:39.363 に答える