2024年11月Linux系统expect命令操作实例(2)

发布时间:

  ⑴在需要管理大量的Linux服务器时,可以这样做:

  ⑵.host.list

  ⑶... root abc

  ⑷... root abc

  ⑸... root abc

  ⑹... root abc

  ⑺... root abc

  ⑻... root abc

  ⑼... root abc

  ⑽... root abc

  ⑾我们把服务器的IP地址、端口号、用户名、密码一起放在host.list文件里,按行排列。

  ⑿下面来看看脚本文件main.exp

  ⒀#!/usr/bin/expect -f

  ⒁set ipaddress [lindex $argv ]

  ⒂set port [lindex $argv ]

  ⒃set username [lindex $argv ]

  ⒄set passwd [lindex $argv ]

  ⒅set timeout

  ⒆spawn ssh $ipaddress -p$port -l$username

  ⒇expect {

  ⒈“yes/no” { send “yes

  ⒉”;exp_continue }

  ⒊“password:” { send “$passwd

  ⒋expect -re “]($|# ”

  ⒌send “bash /root/test.sh

  ⒍expect -re “]($|# ”

  ⒎send “exit

  ⒏来做一个while循环:whi.sh

  ⒐#!/bin/bash

  ⒑host=“host.list”

  ⒒while read line

  ⒓expect main.exp $line

  ⒔done 《 $host

  ⒕把以上脚本都赋予执行权限,就可以了。

  ⒖案例:scp文件传输

  ⒗expect -c “

  ⒘spawn scp :/root/file.tgz /root

  ⒙expect {

  ⒚”*assword“ {set timeout ; send ”abc

  ⒛”yes/no“ {send ”yes

  ①“; exp_continue;}

  ②expect eof

  ③同样的原理,也可以做循环进行批量管理,还可以更简化脚本,也不多说明了,有兴趣的同学可以多尝试下。使用expect进行自动输入密码登陆,基本多用于批量管理。也还算方便。关于批量管理有多种方法,可以在主机之间建立ssh信任机制,也可以免密码登陆管理等。还可以使用sshpass(外部命令这个命令进行带密码在脚本里执行自动输入密码。

  ④上面就是Linux使用expect命令的方法介绍了,本文一共介绍了expect命令的三个操作实例,通过这些实例的练习,你一定能轻松掌握expect命令的用法。