sshpass
前言:
sshコマンドは、パスワードのパラメータが指定されていないため、スクリプトでsshコマンドを使用する場合、手動でパスワードを入力して実行を継続する必要がある.これにより、スクリプトの自動化実行が悪くなり、特にsshに対応するマシン数が多い場合、気が狂う.expectスクリプトとsshpassによる実現の2つの方法について説明する.
*)expectスクリプトを使用して1.expectはシステムに付属するツールではなく、yum install expect-yをインストールする必要があります.
2.expectスクリプトの作成規則
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
簡単な例:
1
2
3
4
5
6
これでsudoパスワードの入力を避けることができます
3.ケーススタディ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
コメント:ssh-o StrictHostKeyChecking=no初めてログインしたマシンをチェックせず、ユーザーがyes/no echo-e$ssh_を手動で入力することを回避warpper,-eパラメータは後続の文字列に対して、エスケープサポートスイッチを開く.
*)sshpassの使用
公式サイトのアドレス:http://sourceforge.net/projects/sshpass/ sshpasswgetのインストールhttp://nchc.dl.sourceforge.net/project/sshpass/sshpass/1.05/sshpass-1.05.tar.gztar zxvf sshpass-1.05.tar.gzcd sshpass-1.05./configuremake && make install
または
# yum install epel-release
プラグインをロードしました:fastestmirror
# yum repolist
# yum -y install sshpass
使用方法:
# sshpass
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
-f filename Take password to use from file
-d number Use number as file descriptor for getting password
-p password Provide password as argument (security unwise)
-e Password is passed as env-var "SSHPASS"
With no parameters - password will be taken from stdin
-P prompt Which string should sshpass search for to detect a password prompt
-v Be verbose about what you're doing
-h Show help (this screen)
-V Print version information
At most one of -f, -d, -p or -e should be used
# export SSHPASS="user_password"
# sshpass -e ssh -p22022 [email protected] "hostname"
Nasty PTR record "192.168.5.77"is set up for 192.168.5.77, ignoring
vic8
sshコマンドは、パスワードのパラメータが指定されていないため、スクリプトでsshコマンドを使用する場合、手動でパスワードを入力して実行を継続する必要がある.これにより、スクリプトの自動化実行が悪くなり、特にsshに対応するマシン数が多い場合、気が狂う.expectスクリプトとsshpassによる実現の2つの方法について説明する.
*)expectスクリプトを使用して1.expectはシステムに付属するツールではなく、yum install expect-yをインストールする必要があります.
2.expectスクリプトの作成規則
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
. [#!/usr/bin/expect]
shell 。
: 。
2
. [set timeout ]
, : . timeout -
1
3
. [spawn ]
spawn expect expect , , .
4
. [expect
""
]
expect expect , .
5
. [send
"\r"
]
, 。
: “\r”, .
6
. [interact]
, , , expect eof
7
. $argv
expect bash . [lindex $argv n] ,n
0
, , , ....
簡単な例:
1
2
3
4
5
6
#! /usr/bin/expect
spawn sudo apt-get install vim
expect
"password"
send
"\r"
expect eof
これでsudoパスワードの入力を避けることができます
3.ケーススタディ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#! /bin/bash
function auto_ssh() {
username_server=
"$1"
password=
"$2"
command=
"$3"
ssh_warpper="
spawn ssh -o StrictHostKeyChecking=no $username_server \"$command\"
expect {
-nocase \"password:\" {send \"$password\r\"}
}
expect eof
"
echo -e $ssh_warpper | /usr/bin/expect
}
auto_ssh root
@172
.16.
1.121
123456
"ifconfig eth0"
コメント:ssh-o StrictHostKeyChecking=no初めてログインしたマシンをチェックせず、ユーザーがyes/no echo-e$ssh_を手動で入力することを回避warpper,-eパラメータは後続の文字列に対して、エスケープサポートスイッチを開く.
*)sshpassの使用
公式サイトのアドレス:http://sourceforge.net/projects/sshpass/ sshpasswgetのインストールhttp://nchc.dl.sourceforge.net/project/sshpass/sshpass/1.05/sshpass-1.05.tar.gztar zxvf sshpass-1.05.tar.gzcd sshpass-1.05./configuremake && make install
または
# yum install epel-release
プラグインをロードしました:fastestmirror
# yum repolist
# yum -y install sshpass
使用方法:
# sshpass
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
-f filename Take password to use from file
-d number Use number as file descriptor for getting password
-p password Provide password as argument (security unwise)
-e Password is passed as env-var "SSHPASS"
With no parameters - password will be taken from stdin
-P prompt Which string should sshpass search for to detect a password prompt
-v Be verbose about what you're doing
-h Show help (this screen)
-V Print version information
At most one of -f, -d, -p or -e should be used
# export SSHPASS="user_password"
# sshpass -e ssh -p22022 [email protected] "hostname"
Nasty PTR record "192.168.5.77"is set up for 192.168.5.77, ignoring
vic8