`
sambafeng
  • 浏览: 62746 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

通过expect自动登录到30台linux机器运行相同命令

阅读更多

 

一、用以下expect脚本可以同时对200台机器执行同一个命令,

比如:打补丁(expect remote.exp)

#!/user/bin/expect -f

for {set i 1} {$i<=200} {incr i} {

spawn ssh -p 1022 -l root 192.168.6.$i

expect "*password: "

sleep 3

send "123456\r"

expect "username\r"

send "su -\r" #SSH普通用户名密码登录

expect "Password:"

send "123456\r" #SSH的root用户名密码登录

expect -timeout 1

expect "root"

#send "find / -name sambafeng.txt\r"

send "patch -R -p1 patching file prj0name\r"

#interact 中断调试

}

 

二、用ssh密钥方式

#!/bin/bash

#============author sambafeng===================

#==============INIT=============================

deployDir=/opt/fordeploy

backup=/opt/backup

scriptDir=/opt/script

#=============IP Partten=================================================

#url="$1"

#url_1=${url//\\//}

#url_2=${url_1#*94}

#dir="/opt/share"$url_2

#appname=$(ls -l ${dir}/|grep "\."|awk '{printf $9 "\n"}')

#cp $dir/$appname $deployDir

#=============eli the version====================

x=0

for filename in $deployDir/*;

do

     fullname=$(basename $filename)

     p_name=$(echo $fullname|awk -F "-[0-9]" '{print $1}'|awk -F "-stage2" '{print $1}'|awk -F "." '{print $1}')

     p_type=$(echo $fullname| rev | cut -c 1-3 | rev)

     PackageName="$p_name"."$p_type"

     mv -f $deployDir/$fullname $deployDir/$PackageName

     array[$x]=$PackageName

     let x+=1

done

#===============Remote deploy===================================================

echo "please select the package for deploy"

select var in ${array[@]}

do

 for n in $(cat /opt/script/map.properties |grep "${var}")

    do

       list=($(echo $n | awk -F',' '{printf("%s %s %s %s",$1,$2,$3,$4)}'))

          echo "==PackageName:${list[0]}==serverIp:${list[1]}==NodeName:${list[2]}==appName:${list[3]}========"

             echo -n "Are sure begin deploy?(Y/N)"

             read YES_OR_NO

             case $YES_OR_NO in

                  y|Y|yes|YES)

                  scp $deployDir/${list[0]} oracle@${list[1]}:$deployDir

                  ssh ${list[1]} "sh $scriptDir/redeploy.sh ${list[2]} ${list[3]} ${list[0]};exit;"

                  ;;

                  n|N|no|NO)

                  echo "canceled"

                  ;;

              *)

             echo "Error ,you should input[Y|N]"

             exit 1

              ;;

             esac

     done

         rm -f $deployDir/${list[0]}

         echo "$var deploy finished"

done

 

三、python实现ssh批量登陆执行命令 #!/usr/bin/env python import pexpect def ssh_cmd(ip, passwd, cmd): ret = -1 ssh = pexpect.spawn('ssh root@%s "%s"' % (ip, cmd)) try: i = ssh.expect(['password:', 'continue connecting (yes/no)?'], timeout=5) if i == 0 : ssh.sendline(passwd) elif i == 1: ssh.sendline('yes\n') ssh.expect('password: ') ssh.sendline(passwd) ssh.sendline(cmd) r = ssh.read() print r ret = 0 except pexpect.EOF: print "EOF" ssh.close() ret = -1 except pexpect.TIMEOUT: print "TIMEOUT" ssh.close() ret = -2 return ret #!/usr/bin/python import paramiko import threading def ssh2(ip,username,passwd,cmd): try: ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(ip,22,username,passwd,timeout=5) for m in cmd: stdin, stdout, stderr = ssh.exec_command(m) # stdin.write("Y") #简单交互,输入 ‘Y’ out = stdout.readlines() #屏幕输出 for o in out: print o, print '%s\tOK\n'%(ip) ssh.close() except : print '%s\tError\n'%(ip) if __name__=='__main__': cmd = ['cal','echo hello!']#你要执行的命令列表 username = "" #用户名 passwd = "" #密码 threads = [] #多线程 print "Begin......" for i in range(1,254): ip = '192.168.1.'+str(i) a=threading.Thread(target=ssh2,args=(ip,username,passwd,cmd)) a.start()
分享到:
评论

相关推荐

    expect+tcl工具大合集,用于远程登陆到另外一台linux机器。

    在IT行业中,`expect`和`TCL`是两种强大的自动化工具,特别是在远程系统管理和脚本编程领域。本文将深入探讨这两个工具以及它们如何协同工作,帮助用户更高效地进行远程Linux系统的操作。 首先,`TCL`(Tool ...

    expect的linux安装包

    在Linux环境中,`expect`是一个强大的自动化脚本工具,它允许程序员或系统管理员与交互式应用程序进行自动对话。这个工具由Trent Mick开发,并且基于Tcl语言,它极大地简化了自动化过程,尤其是那些需要用户输入的...

    linux expect安装及expect,tcl安装包

    Linux Expect 是一个强大的自动化工具,它允许用户编写脚本来自动处理需要交互的程序,比如SSH登录、SCP文件传输等。Expect 基于TCL语言,因此在使用之前需要先安装TCL环境。本压缩包提供了Linux Expect的安装教程、...

    用Expect实现Linux自动远程登陆.pdf

    通过 Expect,可以实现 Linux 的自动远程登录,简化登录过程,提高远程操作的效率。 Expect 工具的主要功能是将子进程包装在 Unix 伪终端中,允许任意程序通过终端接口进行自动化控制。 Expect 可以模拟用户的交互...

    linux下expect的安装方法

    Linux下的`expect`工具是一个强大的自动化管理利器,尤其适合处理那些需要交互式输入的脚本任务,比如自动登录、密码输入、脚本自动化等。它基于Tcl语言,通过模拟用户交互来自动化复杂的命令行操作。`expect`的安装...

    linux实现交互执行:expect

    总的来说,`expect`是Linux自动化运维中的得力工具,它简化了与命令行交互的任务,提升了效率,尤其是在需要大量重复操作的环境中。了解和掌握`expect`的使用,将对提升Linux系统的管理和维护能力大有裨益。

    expect自动登录.pdf

    Expect是一个用于自动化控制交互式应用程序的工具,常用于自动化执行需要用户交互的命令,例如登录服务器、执行远程命令等。Expect通过预测应用程序的行为,自动发送命令序列。本文将详细介绍如何安装、使用Expect...

    linux expect

    ### Linux下的Expect交互式命令使用方法 #### 一、Expect简介 Expect 是一种自动化交互式命令行工具,它主要用于在 Linux 或 Unix 系统中控制交互式应用,例如 Telnet、SSH、FTP 和其他需要与用户进行交互的应用...

    Linuxssh登录远程服务器 expect

    SSH(Secure Shell)是Linux环境下用于远程登录的一种安全协议,它允许用户通过加密的方式连接到另一台计算机,进行命令执行、文件传输等操作。当需要自动化这些过程时,`expect`工具就显得尤为重要。`expect`基于...

    Linux expect交互命令使用详解.docx

    Linux中的`expect`工具是一个强大的自动化脚本工具,主要用于与命令行交互,特别是与需要用户输入的程序进行自动化通信,如SSH登录、FTP传输等。它基于TCL语言,因此在使用`expect`之前需要先确保系统安装了TCL和...

    登录linux执行命令

    本程序“登录Linux执行命令”旨在实现一个自动化流程,通过连接到AMQ(Advanced Message Queuing Protocol)消息队列,被动接收消息,并在Linux环境下执行预设的指令。这一过程涉及到的主要技术包括AMQ的交互、SSH...

    linux-expect模拟键盘输入实现定时登录教程.zip

    在Linux环境中,有时我们需要自动化执行一些需要交互的任务,比如定时登录到远程服务器。"expect"工具就是为此设计的,它可以模拟键盘输入,自动应答交互式程序,使得非脚本化的任务可以被脚本化处理。这个教程将...

    expect在windows下使用的

    它的工作原理是模仿终端行为,通过发送期望的输入并捕获预期的输出来控制这些程序,尤其适合于自动登录、运行远程命令、自动化系统配置等场景。在Unix/Linux环境中,`Expect`通常与Tcl语言结合使用,但在Windows系统...

    linux/unix下expect5.45+tcl工具安装包、使用说明及范例

    在Linux和Unix操作系统中,自动化运维是提升效率和...通过深入学习和实践,Expect和Tcl的组合能成为Linux和Unix管理员的强大助手,实现高效、可靠的自动化运维。这个安装包提供的资源将帮助你快速上手并掌握这项技术。

    用expect 实现切换用户时自动输入密码.txt

    ### 使用Expect实现自动切换用户及执行命令 #### 一、Expect简介 `Expect`是一种用于自动化交互式命令的工具,它能模拟用户与基于文本的交互式程序进行对话。通过编写脚本来控制这些对话,我们可以实现一系列自动...

    Linux expect实现自动登录脚本实例代码

    Linux Expect 是一个强大的工具,它基于Tcl语言,专门用于自动化需要用户交互的任务,例如SSH登录、FTP传输等。在很多场景中,手动输入用户名和密码进行登录或执行远程命令可能会变得繁琐,尤其是在频繁操作的情况下...

    linux expect 自动登录交换机保存配置的方法

    在这个特定的场景中,我们利用 Expect 脚本来实现自动登录到交换机并保存配置。这种方法对于网络管理员来说非常有用,因为它可以大大节省时间,提高效率,尤其在需要批量处理多个设备时。 首先,我们来看一下提供的...

Global site tag (gtag.js) - Google Analytics