我的编程空间,编程开发者的网络收藏夹
学习永远不晚

expect实现批量修改linux密码脚本分享

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

expect实现批量修改linux密码脚本分享

最近对linux批量执行的脚本很感兴趣,在网上到处找有关expect批量执行脚本,今天就给大家共享一个批量修改密码的脚本.

脚本内容:


#!/usr/bin/expect

if { $argc<2 } {

    send_user "usage: $argv0 <host file> <cmd file> n"

    exit

}

 

# 机器列表数据格式:  IP  端口  旧密码  新密码

set hostfile    [ open [lindex $argv 0] ]

# 命令列表数据格式:  一条命令一行

set cmdfile    [ open [lindex $argv 1] ]

 

# 数据文件分割符,默认为空格

set part " "

 

# 过滤关键字

set key_password "password: "

set key_init "(yes/no)? "

set key_confirm "'yes' or 'no': "

set key_ps "*]# "

set key_newpassword "UNIX password: "

set timeout 30

 

log_file ./exprct.log

match_max 20480

 

while {[gets $hostfile _hosts_] >= 0} {

    set hosts [string trim $_hosts_]

    set str_index [string first $part $hosts]

    set host [string trim [string range $hosts 0 $str_index]]

    set temp [string trim [string range $hosts [expr $str_index + 1] [string length $hosts]]]

    set str_index [string first $part $temp]

 

    if { $str_index == -1 } {

        set port 22

        set pass $temp

        set newpass $temp

    } else {

        set port [string trim [string range $temp 0 $str_index]]

        set temp_pass [string trim [string range $temp [expr $str_index + 1] [string length $temp]]]

        set str_index [string first $part $temp_pass]

        set pass [string trim [string range $temp_pass 0 $str_index]]

        set newpass [string trim [string range $temp_pass [expr $str_index + 1] [string length $temp_pass]]]

    }

 

    spawn ssh -p $port $host

    while {1} {

        expect {

            "$key_password" {

                send "$passr"

            }

            "$key_init" {

                send "yesr"

            }

            "$key_confirm" {

                send "yesr"

            }

            "$key_ps" {

                while {[gets $cmdfile cmd] >= 0} {

                    send "$cmdr"

                    expect {

                        "$key_ps" {

                            continue

                        }

                        "$key_newpassword" {

                            send "$newpassr"

                            expect "$key_newpassword" {

                                send "$newpassr"

                                expect "$key_ps"

                                continue

                            }

                        }

                    }

                }

                seek $cmdfile 0 start

                send_user "r"

                break

            }

            timeout {

                puts "$host timeoutn"

                break

            }

        }

    }

    send "exitr"

    close

    wait

}

 

close $hostfile

close $cmdfile

 

exit

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

expect实现批量修改linux密码脚本分享

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

expect实现批量修改linux密码脚本分享

最近对linux批量执行的脚本很感兴趣,在网上到处找有关expect批量执行脚本,今天就给大家共享一个批量修改密码的脚本.脚本内容:#!/usr/bin/expectif { $argc<2 } {send_user "usage: $ar
2022-06-04

expect怎么实现批量修改linux密码

这篇文章主要讲解了“expect怎么实现批量修改linux密码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“expect怎么实现批量修改linux密码”吧!最近对linux批量执行的脚本很感
2023-06-09

Shell脚本批量修改文件后缀名代码分享

早上本想将一些照片上传到相册中,但是由于所有照片的扩展名都是JPG而不是小写的jpg,因此造成了“格式不正确”而不能上传照片。此刻就产生了这样一个问题:使用shell脚本如何批量将所有文件的扩展名JPG都改成小写的jpg? 既然要批量替换文
2022-06-04

linux中批量修改文件名的脚本代码

使用 rename 命令 ======================== NAME rename - Rename files SYNOPSIS rename from to file... =======================
2022-06-04

Shell脚本实现批量下载网络图片代码分享

最近为了做好一个天气预报的项目,需要从Yahoo下载一些天气图标,但是由于图标比较多,有80多张。图标是存储在Yahoo Image网站上的。 迅雷不支持https的下载,虽然可以在浏览器下载,但是在浏览器下载太慢,于是写了一个批量下载图片
2022-06-04

使用iconv批量改变文件编码的shell脚本分享

这篇文章主要介绍“使用iconv批量改变文件编码的shell脚本分享”,在日常操作中,相信很多人在使用iconv批量改变文件编码的shell脚本分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”使用iconv
2023-06-09

shell脚本中使用iconv实现批量文件转码的代码分享

在开发中,我们经常需要对N多文件编码进行更改,iconv只能对单文件的进行更改,怎么办呢?我们写一个shell脚本来解决这个问题。 例子一:使用shell脚本实现批量转码的操作。#!/bin/sh # convertCodeFilePat
2022-06-04

实现批量linux格式化硬盘和挂载硬盘脚本分享

#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbinexport PATH i=1while [ $i -lt 13 ] #硬盘数量,除系统盘之外是12块doj=
2022-06-04

Shell脚本实现检测文件是否被修改过代码分享

#!/bin/bash funmd5_1() { find /root/passwd -type f | xargs md5sum > /tmp/funmd5_1.log } funmd5_2() { find /root/passwd -
2022-06-04

如何实现Shell脚本中非交互式修改密码

本篇内容介绍了“如何实现Shell脚本中非交互式修改密码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1:使用chpasswdchpassw
2023-06-09

Linux下实现SSH免密码登录和实现秘钥的管理、分发、部署SHELL脚本分享

环境: ssh server: 192.168.100.29 server.example.com ssh client: 192.168.100.30 client.example.com 通过root用户建立秘钥认证实现SHELL脚
2022-06-04

Shell脚本实现自动修改IP、主机名等功能分享

作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名、ip信息、网关等配置。修改成特定的主机名在维护和管理方面也比较方便。如下脚本用途
2022-06-04

Linux下如何实现SSH免密码登录和实现秘钥的管理、分发、部署SHELL脚本

这篇文章主要介绍了Linux下如何实现SSH免密码登录和实现秘钥的管理、分发、部署SHELL脚本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。环境:ssh server: 1
2023-06-09

编程热搜

目录