sshpass或expect实现ssh自动登录

第一种方法(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 [email protected]$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:[email protected]
#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
时间: 2024-10-22 14:57:22

sshpass或expect实现ssh自动登录的相关文章

用了一天的时间,linux下expect实现ssh自动登录服务器记,鄙视下网上各种抄来抄去残段子

因为要对客户方的快30个项目进行特别有顺序的重启,所以不得不想办法写个脚本,网上看了不少段子.真是残缺的可以.没有一段是可以正常运行的.我来按顺序记录一下 脚本的本身 使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: ############################################## #!/usr/bin/expect set timeo

expect实现ssh自动登录

#!/usr/local/bin/expect set PASSWD [lindex $argv 1] set IP [lindex $argv 0] set CMD [lindex $argv 2] spawn ssh $IP $CMD expect "(yes/no)?" { send "yes\r" expect "password:" send "$PASSWD\r" } "password:" {

linux expect详解(ssh自动登录)

shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh [email protected] expect "*password:" send "123\r" expect "*#" interact 原文链接:http://www.xuanhao360.com/linux-expects/ Expect是一个用来处理交互的命令.借助Expect,我们可以将交互过程写在一个脚本上,使之自动化完成.形

[转]expect实现ssh自动交互

shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh [email protected] expect "*password:" send "123\r" expect "*#" interact 原文链接:http://www.xuanhao360.com/linux-expects/ Expect是一个用来处理交互的命令.借助Expect,我们可以将交互过程写在一个脚本上,使之自动化完成.形

shell脚本实现ssh自动登录远程服务器示例

本文转载自 懒惰的肥兔 :http://www.xuanhao360.com/linux-expects/ shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh [email protected] expect "*password:" send "123\r" expect "*#" interact Expect是一个用来处理交互的命令.借助Expect,我们可以将交互过程写在一个脚本上,使

最新SSH自动登录方案(RSA)

一. 前言 直接使用ssh连接到服务器时,需要手动输入密码.如果能够不用手动输入密码,且自动登录到SSH服务器的话,那就爽了. 经过一晚上的研究,终于搞定了.(原因在于旧的配置方式已不能正确使用了) 在进行配置前,先假定ssh客户端为ssh-client,ssh服务器为ssh-server(运行ssh服务的一边). 二. 配置方法 1. 在ssh-client一边使用ssh-keygen生成一对rsa key $ssh-keygen -t rsa Generating public/privat

使用public/private key让putty(ssh)自动登录

方法一:使用puttygen.exe 第一步:生成密匙 运行puttygen.exe,选择需要的密匙类型和长度,使用默认的SSH2(RSA),长度设置为1024就可以了. passphrase可以为空,免得登录时还是要输入一次密码. 点击Save private key 按钮保存公匙和私匙,例如key.ppk,public key不用保存,以后使用Puttygen.exe Load功能就可以显示public key. 第二步:上传密匙 用自己的帐号登录linux主机,然后执行下面的命令: $ c

[转] windows 上用程序putty使用 ssh自动登录Linux(Ubuntu)

需求: 在Win7电脑上使用putty(一种ssh客户端)连接Ubuntu 工具: puttygen.exe 和 putty.exe 第一步:生成密匙 运行puttygen.exe,选择需要的密匙类型和长度,使用默认的SSH2(RSA),长度设置为1024就可以了. passphrase可以为空,免得登录时还是要输入一次密码. 点击Save private key 按钮保存私匙,例如key.ppk: 复制puttygen public Key 文本框内的内容到剪贴板中. 第二步:上传密匙 用Pu

expect ssh 自动登录 example

#!/usr/bin/expect -f set ip 192.168.20.200 set password admin set timeout 10 spawn ssh [email protected]$ip -p 2169 expect { ##"*yes/no" { send "yes\r"; exp_continue} "*password:" { send "$password\r" } } interact