2

パスワードと SSH を取得するスクリプトを作成しています。注: 詳細には触れませんが、ここではセキュリティ/暗号化は問題ではありません。ハードコードされたパスワードが必要です。ただし、Unix スクリプトが "password:" プロンプトに応答するようにパイプするのに問題があります。私はそれをパイプしようとしましたが、それでもプロンプトを求められました。

ここでexpectを使用する回答を見てきました...私はシェルスクリプトの専門家ではありません。試してみると、spawn: command not found、interact: command not found、send: command not foundというエラーが発生しました。ダウンロードを期待してグーグルで検索してみましたが、何も見つかりませんでした...何が欠けていますか? このスクリプトは、外部スクリプトがインストールされているかどうかに関係なく、ユーザーに配布できる必要があります。

私の非動作コード:

#!/bin/bash"
STR="MYPASS"
echo $STR | ssh -t -t user@host
4

1 に答える 1

3

読んだ回答によると、sshのパスワードプロンプトとやり取りしたい場合は、expectを使用する必要があります。これは、SSH が stdin (パイプ先) からパスワードを読み取るのではなく、tty から読み取るためです。

期待スクリプトから取得spawn: command not foundしていた場合interact: command not found、実際にはシェル スクリプトに期待コードを記述したという手がかりです。あなたのexpectスクリプトのシバン行#!/path/to/expectが実際に含まれていて、含まれていないことを確認してください#!/bin/sh

いずれにしても、公開鍵認証で SSH を使用することは、はるかに優れたアイデアです。パスフレーズのない秘密鍵は簡単にスクリプト化でき、パスワードをスクリプトにハードコーディングするよりも安全です。

于 2013-03-13T03:04:14.927 に答える