web-dev-qa-db-ja.com

FTPプロンプトからプログラムを実行することは可能ですか?

私はUnixまたはシェルスクリプティング(真実を言うにはまったくの初心者)に比較的慣れていませんが、これが取り決めです。リモートのUNIXサーバーで実行するBIソフトウェアがあります。 SASクライアントを介して、一部の分析を実行し、そのUNIXサーバーに自動的にプッシュする必要があるフラットファイルをいくつか作成します。SAS X rsubmitでUnixコマンドを実行するコマンド。FTPプロンプトを介してファイルをアップロードしますが、ftpサーバーにログオンしたら「sh」コマンドを使用します

ftp -nv << -EOF > /AutomatedReports/Flatfiles/log/sendInv.log
open biserver.myserver.com
user biuser pass1234
Prompt
lcd  /container/AutomatedReports/KPI_Flatfiles/
cd  /container/AutomatedReports/apps/flatfiles
put kpi_new_inv.txt
put instock_trend.txt
quit

上記のコードはUNIXに送信されますが、

sh edastart -x "EX test"

エラーが発生しました。何か問題があるかどうかを知りたいので、別の方法を探します。ヘルプ、ガイダンス、または回答は高く評価されます。

6
isJustMe

いいえ、FTPプロトコルを使用して遠くのUnixサーバーでプログラムを起動することはできません(奇妙な拡張機能を使用しない限り)。

Sshを使用できない理由は、scpを使用して遠くのUnixサーバーにファイルをコピーし、sshを使用してそのサーバーにログインすることです。

TCL/Expectの使用を検討してください。 TCLのExpectモジュールは、ログインプロンプトとパスワード、ftpコマンドの処理など、コンソールコマンドの自動化に優れています。 Expectスクリプトを使用すると、完全なFTPログインセッションを自動化できます。手動で実行できることはすべて、Expectを介して実行できます。基本的には、シェルにどのコマンドを実行するか、どのプロンプトまたは「期待」への応答を伝えるかを指定します。期待するものは、ハードコードされた値または正規表現として指定できます。 Expectの使用例の1つは、Ciscoルーター(ユーザーID /パスワード)にログインするための自動テストのスクリプトを作成し、ルーターを構成し、いくつかのテストを実行し、結果を確認して、ルーターから出ることです。

1
vc_virginia

これを正確に実行して、リモートLinuxホストでHiveクエリを実行し、その結果をSASプログラムにパイプで返します。 SASコードからの出力がない場合でも、すべてのSTD出力を収集して、すべてが正常に実行されたことを確認するためのチェックを実行することをお勧めします。

filename Hive pipe 'C:\Progra~1\ICW\bin\ssh.exe server.name.local -l username -i c:\id_rsa " ls "' lrecl=80;

data x ;
  length line $80.;
  infile Hive truncover;
  input @1 line $80.;
run;

私が使用したサードパーティの実行ファイルはここにあります:

http://www.itefix.no/i2/copssh

RSAキーを生成したので、ログインするたびに完全な資格情報を提供する必要はありませんが、それを理解できるか、パラメーターとして通常のユーザー名のパスワードを提供できると確信しています...

結果をパイプで送りたくない場合は、SAS 'X'コマンドを使用して上記のリモートコマンドを実行することもできます。

頑張ってR

1
Rob Penridge

任意のコマンドを実行できた場合、それはFTPサーバーの重大なセキュリティ侵害になります。 FTPはファイル転送方式のみです。リモート実行の場合は、代わりにSSHを使用してください。

1
Fred Foo

他の人が言ったように、PuTTYを使ってシェル上で実行します。プロセスを自動化する必要がある場合は、cronジョブやトリガーファイルを設定しないでください。

1
chris

PuTTYに既に慣れている場合は、同じ開発者のPlinkを使用してください。 SSHを介したコマンドのリモート実行をサポートし、自動スクリプトで使用できます。

0
Alex