0

Perlスクリプトにシェルエイリアスを実行させることは可能ですか?変更するためのアクセス権がないPerlモジュールがある状況に遭遇しています。それが行うことの1つは、SSH経由で複数のサーバーにログインしていくつかのコマンドをリモートで実行することです。残念ながら、一部のシステム(私も変更するためのアクセス権がありません)にはバグのあるSSHサーバーがあり、システムがSSH公開鍵を送信しようとするとすぐに切断されます。他のサーバーに接続するためにSSHエージェントが必要なため、SSHエージェントを実行しています。

私の最初の解決策は、sshをssh -o PubkeyAuthentication = noに設定するエイリアスを設定することでしたが、Perlは、エイリアスを使用する代わりに、PATHで検出したsshバイナリを実行します。

問題のあるサーバーに接続しているときにSSHエージェントを無効にするか、実際の接続を行うPerlモジュールをオーバーライドすることが唯一の解決策のようです。

4

4 に答える 4

5

おそらく、実行したいコマンドの前に呼び出さsshれたコマンドを配置することができます。PATHsshssh

于 2009-11-03T14:11:48.213 に答える
3

エイリアスをスキップして、sshどこかのディレクトリで呼び出されるシェルスクリプトを作成し、パスを変更して、実際のディレクトリを含むディレクトリの前にそのディレクトリを配置してみsshませんか?

iostat新しいバージョンでは、サードパーティ製品では処理できない別の形式が出力されたため、最近これを行う必要がありました(出力をスキャンしてレポートを生成しました)。

iostat実数を呼び出すシェルスクリプトを作成しましたiostat(ハードコードされたパスを使用しますが、もっと洗練されている可能性があります)。出力をスクリプトに渡してawk元の形式に変換します。次に、サードパーティプログラムのパスを変更すると、正常に動作し始めました。

于 2009-11-03T14:12:26.013 に答える
3

perlスクリプトを実行する前にPATHを変更するか、.ssh/configでこれを使用してください

Host *
  PubkeyAuthentication no
于 2009-11-03T14:16:38.540 に答える
0

その名前で.bashrc(または.profileなど)で関数を宣言できます。これは次のようになります(壊れている可能性があります):

function ssh {
  /usr/bin/ssh -o PubkeyAuthentication=no "$@"
}

ただし、構成ファイルを使用するのが最善の解決策かもしれません。

于 2009-11-03T14:17:29.590 に答える