Unix全般 -> シェル -> Bash
自動ssh と 自動scp
自動ssh
基本的な記述
#!/usr/bin/expect
set timeout 5
spawn ssh -l ユーザ名 192.168.0.2
expect "password:"
send パスワード\r\"
expect "Last login"
send "hostname\n"
interact
シェルに埋め込む
シェルに埋め込むと複数のサーバで実行ができる。
#!/bin/sh
IP_LIST="192.168.0.2
192.168.0.3"
for IP in $IP_LIST
do
expect -c "
set timeout 5
spawn ssh -l ユーザ名 $IP
expect \"password:\"
send \"パスワード\r\"
expect \"Last login\"
send \"df -h\r\"
send \"exit\r\"
interact
"
exit 0
root権限で実行する。rootへのスイッチユーザを追加
#!/bin/sh
IP_LIST="192.168.0.2
192.168.0.3"
for IP in $IP_LIST
do
expect -c "
set timeout 5
spawn ssh -l ユーザ名 $IP
expect \"password:\"
send \"パスワード\r\"
expect \"Last login\"
send \"su -\r\"
expect \"Password:\"
send \"rootのパスワード\r\"
send \"cat /etc/shadow\r\"
send \"exit\r\"
send \"exit\r\"
interact
"
exit 0
自動scp
#!/bin/sh
IP_LIST="192.168.0.2
192.168.0.3"
FILE=$1
DIR=$2
USER=user01
for IP in $IP_LIST
do
expect -c "
set timeout 5
spawn scp $FILE $USER@$IP:$DIR
expect \"password:\"
send \"パスワード\r\"
send \"exit\r\"
interact
"
exit 0