spawn ssh

#! /usr/bin/expect

set ip [lindex $argv 0];
set username [lindex $argv 1];
set password [lindex $argv 2];

set key_init "*yes/no*"
set key_password "[Pp]assword:"
set timeout 30
set prompt "(#|%|\\$) $"

spawn ssh ${username}@${ip}

expect {
	"$key_init" {
		send "yes\r"
		expect "$key_password" {
			send "${password}\r"
		}
	}

    "$key_password" { send "${password}\r" }

    timeout { puts "Timed out during login"; exit 1 }
}

expect -re "$prompt"
send "exit\r"
expect eof { send_user "eof\r" }
时间: 2024-11-01 05:34:12

spawn ssh的相关文章

大规模集群自动化部署SSH无密码登陆

大家需要在每个节点上提前装好"expect"工具 expect的使用请看我的另一篇文章: http://tianxingzhe.blog.51cto.com/3390077/1687661   spawn命令激活一个Unix程序来进行交互式的运行. send命令向进程发送字符串. expect命令等待进程的某些字符串 set timeout 1    设置超时时间  timeout -1 为永不超时 expect eof 只有spawn执行的命令结果才会被expect捕捉到,因为spa

Shell批量SSH免交互登录认证

脚本实现功能:批量或单个SSH免交互登录认证 脚本应用场景:当部署集群时,大多数实现要配置好管理节点与从节点的SSH免交互登录,针对这样的情况,写了下面脚本,简化工作. 脚本支持系统:Ubuntu和CentOS 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

用expect实现ssh自动登录服务器并进行批量管理的实现方法_linux shell

shell代码: 复制代码 代码如下: #!/usr/local/bin/expectset PASSWD [lindex $argv 1]set IP     [lindex $argv 0]set CMD [lindex $argv 2]spawn ssh $IP $CMDexpect "(yes/no)?" {send "yesr"expect "password:"send "$PASSWDr"} "pass

ssh expect自动登录的脚本代码_linux shell

实现:ssh远程登录,每次都要指定一堆用户名和密码,现要求实现自动登录.登录流程:本地A 先登录到 B 再由B 登录到最终的C 如下: 复制代码 代码如下: #!/usr/bin/expect -fset timeout 30spawn ssh Bexpect "password:"send "passwd@\r"expect "]*"send "ssh name@C -p port\r"expect "passwo

ssh自动登录的4种实现方法_linux shell

1. 自动ssh/scp方法 A为本地主机(即用于控制其他主机的机器) ;B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110;A和B的系统都是Linux 在A上运行命令:# ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)# ssh root@192.168.60.110 "mkdir .ssh" (需要输入密码)# scp ~/.ssh/id_rsa.pub root@192.168.60.110:.ssh/

批量修改ssh配置的expect脚本_linux shell

第一思路,用iptables把外网ssh的包DROP掉:第二思路,用tcpwrapper把sshd的allow写死:第三思路,修改sshd_config,只监听内网请求. 由于一些说不清楚的原因,iptables的办法没法用:而tcpwrapper占用CPU资源较多:所以最后决定用第三种办法. 公司服务器比较多,而且根据随机登录查看的结果,sshd_config内容居然还太不一样--手工干了一天,改了两组服务器后,终于下定决心要整个全自动脚本出来干活-- 目前的办法是这样的: cat ssh.e

shell脚本实现ssh自动登录功能分享_linux shell

文件名:ssh_auto_login 复制代码 代码如下: #!/usr/bin/expect### ssh模拟登陆器## @author zhiyuan <hzyhouzhiyuan艾特gmail.com>##if {$argc<4} { puts "Error params: $argv" puts "Expect params :user passwd ip port [translate_id]" exit 1} set default_p

ssh批量登录并执行命令的python实现代码_python

局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件,拷贝某些文件,批量关机等.如果一台一台得手工去操作,费时又费力,如果要进行多个操作就更麻烦啦. 或许你会想到网络同传, 网络同传是什么?就是在一台电脑上把电脑装好,配置好,然后利用某些软件,如"联想网络同传"把系统原样拷贝过去,在装系统时很有用,只要在一台电脑上装好,同传以后所有的电脑都

linux下用expect脚本实现ssh 自动登陆服务器

又学了一个小招,使用 expect 脚本语言实现 ssh 自动连接到服务器,可以自动输入密码.因为每次使用 ssh root@xx.xx.xx.xx 连接服务器,都要手动输入一遍密码,有没有办法自动输入密码呢? 在网上搜索了一下,果然有办法,有一种脚本语言 expect ,它的作用就是能与交互式程序进行"可程序化"会话,比如自动输入密码,碰到"password"字符就会自动输入密码. 首先要安装 expect 脚本程序,不过在 Macbook 中自带了.比如 Cen