sshpass和expect远程登录并执行命令

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
我的博客已迁移到xdoujiang.com请去那边和我交流
一、使用expect自动登录
cat  expect.sh
#!/usr/bin/expect
#使用第一个参数 
set  local_ip [lindex $argv 0]
#后面的也可以用参数[lindex $argv n]
#set password [lindex $argv 1 ]  
#set password2 [lindex $argv 2]
#set command  [lindex $argv 3]
set  local_port 22
set  local_user jackchem
set  local_11psss 11111111
set  local_22psss 22222222
set  timeout 30
 
spawn  ssh  -q $local_user@192.168.$local_ip
expect {
"192.168.20.* password"
{
        send  "$local_11psss\n" ;
}
"192.168.21.* password"
{
        send  "$local_22psss\n" ;
}
"yes/no"
{
        send  "yes\n" ;
        exp_continue;
}
}
interact
chmod  +x expect.sh
比如登录到192.168.20.99的话. /auto .sh 20.99
比如登录到192.168.21.88的话. /auto .sh 21.88
 
二、使用sshpass自动登录
cat  sshpass.sh
#!/bin/bash
#--------------------------------------------------  
#Created:2015-05-18
#Author:jimmygong
#Mail:jimmygong@taomee.com
#Function:
#Version:1.0
#--------------------------------------------------
case  $1  in
192.168.22[0-9].*)
sshpass -f  /root/ .11pass  ssh  -q -p22 -l tomhong $1;;
192.168.23[0-9].*)
sshpass -f  /root/ .22pass  ssh  -q -p22 -l tomhong $1;;
10.*.*.*)
sshpass -f  /root/ .33pass  ssh  -q -p22 -l tomhong $1;;
esac
chmod  +x sshpass.sh
比如登录到192.168.230.199的话. /sshpass .sh 192.168.230.199
比如登录到10.1.1.55的话. /sshpass .sh 10.1.1.55
 
三、批量执行多台机器同一个操作(非交互模式)sshpass
基础环境说明
1、ip
serverA=192.168.1.8
serverB=192.168.1.7
serverC=192.168.1.10
 
2、 ssh 的-t和-o  "StrictHostKeyChecking=no" 参数
-o option Can be used to give options  in  the  format  used  in  the configuration  file .
This is useful  for  specifying options  for  which  there is no separate  command -line flag.
For full details of the options listed below,and their possible values,see ssh_config(5).
   
-t Force pseudo- tty  allocation.This can be used to execute arbitrary  screen -based programs on a remote machine,
which  can be very useful,e.g.when implementing menu services.Multiple -t options force  tty  allocation,even  if  ssh  has no  local  tty .
供一个远程服务器的虚拟 tty 终端
 
3、sshpass的-f参数
-f filename The password is the first line of the  file  filename.
支持从文件里读取密码
 
cat  sshpass.sh
#!/bin/bash
#--------------------------------------------------
#Author:jimmygong
#Email:jimmygong@taomee.com
#FileName:sshpass.sh
#Function: 
#Version:1.0 
#Created:2015-12-16
#--------------------------------------------------
port=22
user= "jimmy"
cmd= "/bin/ps -ef|grep mysql"
#cmd="/bin/df -Th"
allip=(
192.168.1.8
192.168.1.7
192.168.1.10
)
for  ip  in  ${allip[@]}
do 
     echo  $ip
     sshpass -f  /root/ .11pass  ssh  -o  "StrictHostKeyChecking=no"  -t -p$port $user@$ip $cmd
done
 
执行结果
bash  sshpass.sh
192.168.1.8
root       1992      1  0 09:57 ?        00:00:00  /bin/sh  /usr/bin/mysqld_safe
mysql      2331   1992  0 09:57 ?        00:00:00  /usr/sbin/mysqld  --basedir= /usr  --datadir= /var/lib/mysql  --plugin- dir = /usr/lib/mysql/plugin  --user=mysql --pid- file = /var/run/mysqld/mysqld .pid --socket= /var/run/mysqld/mysqld .sock --port=3306
root       2332   1992  0 09:57 ?        00:00:00 logger -t mysqld -p daemon.error
jimmy      2665   2664  0 10:09 pts /1     00:00:00  bash  -c  /bin/ps  -ef| grep  mysql
jimmy      2667   2665  0 10:09 pts /1     00:00:00  grep  mysql
Connection to 192.168.1.8 closed.
192.168.1.7
root       1983      1  0 09:57 ?        00:00:00  /bin/sh  /usr/bin/mysqld_safe
mysql      2310   1983  0 09:57 ?        00:00:00  /usr/sbin/mysqld  --basedir= /usr  --datadir= /var/lib/mysql  --plugin- dir = /usr/lib/mysql/plugin  --user=mysql --pid- file = /var/run/mysqld/mysqld .pid --socket= /var/run/mysqld/mysqld .sock --port=3306
root       2311   1983  0 09:57 ?        00:00:00 logger -t mysqld -p daemon.error
jimmy      2636   2635  0 10:09 pts /1     00:00:00  bash  -c  /bin/ps  -ef| grep  mysql
jimmy      2638   2636  0 10:09 pts /1     00:00:00  grep  mysql
Connection to 192.168.1.7 closed.
192.168.1.10
root       2160      1  0 09:57 ?        00:00:00  /bin/sh  /usr/bin/mysqld_safe
mysql      2505   2160  0 09:57 ?        00:00:04  /usr/sbin/mysqld  --basedir= /usr  --datadir= /var/lib/mysql  --plugin- dir = /usr/lib/mysql/plugin  --user=mysql --pid- file = /var/run/mysqld/mysqld .pid --socket= /var/run/mysqld/mysqld .sock --port=3306
root       2506   2160  0 09:57 ?        00:00:00 logger -t mysqld -p daemon.error
jimmy      2842   2841  0 10:09 pts /1     00:00:00  bash  -c  /bin/ps  -ef| grep  mysql
jimmy      2844   2842  0 10:09 pts /1     00:00:00  grep  mysql
Connection to 192.168.1.10 closed.









本文转自 xdoujiang 51CTO博客,原文链接:http://blog.51cto.com/7938217/1652452,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
235
分享
相关文章
使用sshpass工具通过SSH执行远程命令
`sshpass`是一个用于在脚本中自动输入SSH密码的工具 **在Debian/Ubuntu上安装sshpass:** ```bash sudo apt-get install sshpass ``` **在CentOS/RHEL上安装sshpass:** ```bash sudo yum install sshpass ``` **在Fedora上安装sshpass:** ```bash sudo dnf install sshpass ``` 安装完成后,你可以使用`sshpass`命令通过SSH执行远程命令。以下是一个示例: ```bash sshpass -p 'yo
812 0
sshpass-如何在脚本中执行scp时自动输入密码
sshpass-如何在脚本中执行scp时自动输入密码
190 0
Expect远程ssh登录主机执行命令
Expect是一个命令行工具,它可以自动化交互式任务(如SSH登录、FTP传输等)。 Expect通过模拟用户输入,识别应用程序输出,实现自动化交互式任务的自动化。
531 0
ssh 无法登录问题 SSH2_MSG_KEXINIT
登录阿里云服务器,突然无法登录,排除及解决方法。
5736 0
生成多个ssh key添加到ssh-agent测试连接报错
ssh key添加到ssh-agent测试连接报错 ssh -T git@github.com 如下报错,说明是~/.ssh/config文件问题.ssh/config: line 5: Bad configuration option: usekeychain修改配置文件解决问题,完整流程看这里Mac系统如下 Host new HostName github.
3444 0
sshpass的使用方法
实例1:直接远程连接某台主机: 命令:sshpass -p '密码' ssh root@192.168.11.11     【默认为22端口】   实例2:远程连接指定ssh的端口: 命令:sshpass -p '密码' ssh -p 1000 root@192.
1636 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等