ローカル マシンに 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 -f
to 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 で実行する方法を理解するのを手伝ってくれる人はいますか? どうもありがとう。