0

ローカル マシンに Perl スクリプトがあり、それをリモート サーバーで実行したいと考えています。次のコマンドは正常に機能します。

ssh user@ipaddress "perl - --arg1 arg1 --arg2 arg2" < /path/to/local/script.pl

問題は、パスワードの入力を求めるプロンプトが表示されることですが、私はそれを望んでいません。

私はネットを見回して、3つの解決策を見つけました:

  • 公開鍵/秘密鍵認証を使用する -> 私の場合は問題ありません
  • sshpass の使用 -> 自社の「公式」リポジトリにないため、インストールできません
  • 期待の使用

このページに従って、expect スクリプトを作成しました (期待するのは初めてです): How to use bash/expect to check if an SSH login works、正しい答えからスクリプトを取得し、最初の 3 行を#!/usr/bin/expect -fto have に置き換えました期待スクリプト。

それから私は走った

./ssh.exp user password ipaddress "perl - --arg1 arg1 --arg2 arg2" < /path/to/local/script.pl

そして、タイムアウトエラーが発生しました。まるで走ったかのように./ssh.exp user password ipaddress "perl"

のような引用符も入れてみました

./ssh.exp user password ipaddress '"perl - --arg1 arg1 --arg2 arg2" < /path/to/local/script.pl'

しかし、私は/path/to/local/script.pl not foundエラーがあります。

では、スクリプトを expect で実行する方法を理解するのを手伝ってくれる人はいますか? どうもありがとう。

4

1 に答える 1