Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

expectでssh自動ログイン

      2019/05/23

sshで他のサーバーにログインする時に、毎回パスワード入力するのって面倒ですよね?

え? SSH鍵認証使えばパスワードなしでログインできるって?

その通りなんですが、ログイン先の環境を勝手にいじれなくてSSH公開鍵を置けない状況だったりすることもあるんです。

そういう場合の対処方法はいくつかあるんですが、今回はexpectコマンド使って自動化する方法を紹介します。

いたって簡単。実行環境にexpectコマンドが入っていれば以下のようなスクリプトを書くだけです。

#!/usr/bin/expect
set timeout 10
spawn ssh user@192.168.0.1
expect "password:"
send "hogehoge\n"
interact

上記の場合、ログインユーザがuser、サーバが192.168.0.1、パスワードがhogehogeの場合のスクリプトです。また、ログイン時に 「password:」というメッセージがサーバから送られてきたら、hogehoge + 改行 を送ってくれます。

ね、簡単でしょ。

スクリプトのデバッグしたいときは、「exp_internal 1」をスクリプトの最初で実行してあげればOKです。password: という文字にマッチしたかどうか等が確認できます。

 - サーバ構築

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
グループへのユーザの追加@Linux

グループへユーザを追加する方法。 # gpasswd -a user group …

no image
標準出力と標準エラー出力を入れ替える方法@bash

標準出力と標準エラー出力を入れ替える方法を、結論だけを先に書くと 3>&a …

no image
POP3 + Maildir形式@Debian Etch

メールの保存形式をmboxからMaildirに変更したところ、qpopperがM …

no image
タイムゾーンの変更方法@RHEL

RHELやCentoSインストール時にタイムゾーン間違ったり、VMwareでクイ …

no image
WordPressのパーマリンクの変更

デフォルトのWordPressでは記事をクリックした場合、 /?p=123 のよ …

no image
linuxのSWAPパーティッションにUUIDを指定する

ext3とかext4のパーティッションはtune2fsでUUIDを指定できますが …

no image
Linuxコンテナ(LXC)の接続先ネットワークを物理NWにブリッジ@Ubuntu 14.04

LXCはデフォルトだと、勝手に作られたブリッジに接続し、勝手なローカルアドレスが …

no image
すでに同名のdebパッケージがインストールされているか確認する@Ubuntu 14.04

リポジトリにはまだ登録されていないパッケージを手動でdpkgを使ってアップデート …

uvtoolで簡単にクラウドイメージ取得・起動@Ubuntu 14.04 LTS

Ubuntuのサイトにいろいろとクラウド用のイメージがありますが、uvtoolと …

no image
CPU数を動的に変更する@CentOS 5.5

カーネルにパラメータ(maxcpus)を与えて、OSで使うCPU数を変更できるこ …