2016-07-11 12 views
1

私のWindowsマシンには.batというファイルがあります。この.batファイルでは、plink.exeを使用してUbuntuマシンに接続し、.shスクリプトを実行します。しかし、私はのPlinkを使用する方法に応じたスクリプトに異なる動作を取得:.batのPlink経由のスクリプトの動作が異なります

  1. ログをUbuntuの上に直接(個人的に) - スクリプトは、Bitviseクライアント経由

  2. のsshを成功 - スクリプトをSC -

  3. plink.exeを呼び出すことによって)のPlinkを経由してsshと対話型シェルからスクリプトを呼び出すことを(それが窓cmd.exe内のUbuntuのシェルだ)成功RIPT次いでのPlinkを呼び出し.bat介し

  4. SSHを成功 - スクリプトは、スクリプトが失敗

を失敗W /メッセージ:共有ライブラリをロード

エラーつつ:libCint.soを:共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリはありません

他の投稿はlibCint.soのインストール/許可の問題を参照しているようですが、上記のように他のインスタンスでスクリプトが正しく動作するため、これは当てはまりません。以下は

.batファイルからplink.exe行です:

plink.exe !plink_ssh_details! myscript 

.batファイルを経由して、このように呼ばれたときに上記のスクリプトが失敗しました。再び、Ubuntuから直接呼び出されたとき、またはcmd.exeplink.exeを使用)またはBitviseクライアント経由でUshuntuに直接-sshを実行したときに成功することに注意してください。どんな助けもありがとう。

答えて

1

その他の場合は、対話型セッションを使用しています。

コマンドラインでコマンドを指定すると、Plinkはデフォルトで非対話型セッションを使用しますが、

あなたのスクリプトは、特定の環境変数(PATHなど)に依存している可能性があります。

変数が対話型セッションでのみ設定されている可能性は非常に高いです。おそらくそれらは、対話的なセッションのためにのみ実行される(起動された)起動スクリプトで変更されるからです。

ソリューションは、以下のとおりです。


Soemより多くの無名のSSHサーバはまた、異なる動作をすることができ、たとえば参照してください。 Plink : does not execute commandを参照してください。

+0

環境変数に関して、私は$ PATHを変更して、必要な/再帰的に呼ばれる関数/スクリプトをすべて非対話セッションで表示できるようにしなければなりませんでした。このバグの原因と思われる他の環境変数は何ですか? –

0

この問題を回避するには、ソリューションをハックする必要がありました。私は私の.batファイルから起動されたbashスクリプトのヘッダに「-i」オプションをなかった追加のトリック:いくつかは、望ましくない副作用を警告

#!/bin/bash -i 

注意(詳細についての言及はカントーません...)このオプションを使用する場合。しかし、これをリモートのsshセッションから(Windowsの.batファイルからplink.exeを使用し、インラインコマンドをUnixボックスに渡すなど)対話型スクリプトを呼び出すと、ファイル/ディレクトリの可視性に関する問題が解決されます。&権限の問題。

plinkを使用してUnix上でスクリプトを呼び出していて、スクリプトが期待通りに動作しないことに気づいた場合は、「-i」を追加することで問題のデバッグや解決に役立ちます。繰り返しますが、一部の人は、このハックの望ましくない副作用を主張していますが、私はそれを認識していません。

+0

私の質問には、副作用がリンクに記載されています(しかし、いくつかの問題のみが言及されていますが、考えられる問題の範囲は限りません)。また、インタラクティブなセッション(-i)をタスクの自動化に使うべきではないことは明らかです。 –

+0

Martin - あなたが参照しているリンクが不明です。私はこれまでの副作用は見ていません。 .shスクリプトヘッダーに -iを含めることによる副作用を含むリンクを明確にすることはできますか? –

+0

私の答えには1つのリンクしかありません。また、多くの可能な副作用のうち2つ(出力のANSIシーケンスと出力のコマンドプロンプト)について説明しています。 –

関連する問題