`
loamy
  • 浏览: 321154 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

远程修改用户密码(expect)

阅读更多

一:通过登陆远程root修改密码
通过远程登陆修改netseek用户 密码为52netseek
echo "52netseek" | ssh -l root 192.168.1.112 passwd --stdin netseek

二:  通过expect脚本 登陆普通用户修改自己的密码.
#!/usr/bin/expect
#@brief to change user password by ssh remote machine

proc usage {funcname} {
    puts "Usage: "
    puts "    $funcname <host> <username> <newpasswd> -user <userpasswd>"
    puts "    $funcname <host> <username> <newpasswd> -root <rootpasswd>"
}   

# check param
if { $argc != 5 } {
    usage $argv0
    exit 1
}

# get param
set host [lindex $argv 0]
set username [lindex $argv 1]
set newpasswd [lindex $argv 2]
set loginname "root"
if { [string compare [lindex $argv 3] "-user"] == 0 } {
    set loginname $username
}
set passwd [lindex $argv 4]
puts "$host $username $newpasswd $loginname $passwd"

spawn ssh -l $loginname $host
expect {
"*(yes/no)*" { send "yes\r"; set sshkey 1 }
"*assword:*" { send "$passwd\r"; set sshkey 0 }
if sshkey == 1 {
    expect "*password:*"
    send "$passwd\r"
}
}
expect "*#"

if { [string compare $loginname "root"] == 0 } {
    #send "echo \"$username:$newpasswd\" | chpasswd\r"
    send "echo \"$newpasswd\" | passwd --stdin \"$username\"\r"
} else {
    send "passwd\r"
    expect {
    "*current*assword:" {send "$passwd\r"}
    "passwd: Authentication token manipulation error" {exit}
    }
    expect "New*assword:"
    send "$newpasswd\r"
    expect "Retype*assword:"
    send "$newpasswd\r"
}
expect "*#"
send "exit\r"


用法:
Usage:
./exp.sh <host> <username> <newpasswd> -user <userpasswd>
./exp.sh 192.168.1.112 netseek 52netseekabc  -user 52linux tone

分享到:
评论

相关推荐

    远程批量修改linux服务器密码的脚本归类.pdf

    本文档主要介绍如何使用 Expect 脚本来批量修改远程 Linux 服务器的密码。该方法可以快速地对多台服务器进行密码修改,并且可以实现自动化操作。 知识点: 1. Expect 脚本的使用:Expect 是一个非常强大的工具,...

    批量修改远程linux服务器密码.docx

    接下来,我们可以编写一个bash脚本来读取包含远程服务器IP地址的文件(如`ip_list.txt`),然后通过`expect`来自动登录并修改每个服务器的root密码。脚本的大致结构如下: ```bash #!/bin/bash for IP in $(cat /...

    Jsch批量执行多条命令,包含切换用户输入密码

    参考expect4j的交互式操作方式控制输入输出流实现批量执行多条shell命令同时支持切换用户输入密码提权执行命令输入密码等操作 有完整的测试用例,便于理解 模板化执行命令示例 [$]send[su - root] [Password:]...

    远程批量修改linux服务器密码的脚本

    需要对服务器进行批量的修改root密码,还要在每台服务器新建一个用户,如果一个一个登到的服务器上进行修改的话,估计一个下午又没有了,首先想到的是我最喜欢的php,其中有个ssh2 模块,不得不承认用php 来处理这样...

    expect window版本

    1. 自动化SSH登录:编写 Expect 脚本,模拟输入用户名和密码,自动连接到远程服务器,执行命令或传输文件。 2. 批量执行命令:对于需要在多台设备上执行相同命令的情况,可以通过 Expect 脚本批量处理,提高工作...

    Expect 教程中文版

    - **非交互式程序的控制**:即使是对交互依赖极高的程序,如密码修改或远程登录,Expect也能实现自动化控制,无需人工干预。 - **速度与安全考量**:尽管Expect提供了强大的功能,但在性能和安全性方面也需谨慎。...

    expect 中文教程

    比如,当需要批量更改服务器上的用户密码时,可以使用 `expect` 来自动完成这一过程,同时确保密码的一致性和安全性。此外,还可以利用 `expect` 来进行各种一致性检查,比如确认所有服务器上的配置是否一致。 ####...

    expect5.45.3.tar.gz

    在这个例子中,`spawn`命令启动SSH连接,`expect`等待特定字符串(如"password:"),然后`send`命令发送用户密码,以此类推,直到脚本执行完毕。 总的来说,expect5.45.3是Linux系统管理员和自动化工程师的得力助手...

    CentOS使用expect批量远程执行脚本和命令

    `expect`是一个强大的自动化交互式程序的工具,它能够模拟用户与命令行的交互,使得我们可以通过脚本批量执行远程命令和脚本。在本文中,我们将深入探讨如何在`CentOS`中利用`expect`进行批量远程操作。 首先,确保...

    Expect简介及应用,是一种能够强大的脚本语言

    它能够模拟用户与远程系统的交互过程,例如通过FTP进行文件传输、通过Telnet登录到远程服务器发布文章,甚至可以用于对网络设备如交换机或路由器进行配置管理。 #### 二、Expect的功能特性 ##### 1. **FTP自动化**...

    Using expect to Automate System Administration Tasks

    1. **密码更改**:利用`expect`可以自动执行密码更改流程,适用于批量更新用户密码的情况。 - 示例脚本可能包括获取当前密码、验证新密码规则、输入新密码等步骤。 - 可以在脚本中加入逻辑判断,确保密码强度符合...

    Expect_90min-intro-talk.pdf

    - **远程登录与文件传输:** 当需要频繁登录远程服务器或进行文件传输时,使用 Expect 可以避免每次输入相同的用户名和密码。 - **密码更改:** 在批量更改多个系统账户的密码时,Expect 脚本可以自动完成整个过程。...

    Expect - Curing Those Uncontrollable Fits of Interaction

    1. **密码更改**:例如,使用`passwd`命令更改密码时,该命令会提示用户输入新密码。由于传统shell无法有效地与这类命令进行交互,因此难以编写一个能够自动化整个过程的脚本。 2. **数据传输**:在使用`uucp`等...

    expect脚本学习教程与范例

    3. **脚本解析**:以下是一个更加复杂的示例,用于更改用户 chavez 的登录 Shell 至 `/bin/tcsh`: ```bash #!/usr/bin/expect # 更改登录 Shell 至 tcsh set user [lindex $argv 0] spawn chsh $user expect...

    expect-5.43.0-8.el5.x86_64

    例如,你可以用Expect编写一个脚本来自动更改大量用户的密码,或者定期备份远程服务器的数据。 总之,Expect是一个强大的工具,结合TCL语言,可以实现复杂和灵活的自动化任务。在Linux环境中,通过RPM包管理器进行...

    批量修改密码搭建环境所需包 (2).zip

    例如,可以使用`user`模块的`password`参数来更改密码,或者使用`command`模块执行如`passwd`命令。 `mnt`目录可能包含了挂载点,如果在 Ansible 的任务中涉及到文件系统的操作,如挂载网络存储设备,那么这个目录...

    expect学习笔记及实例详解

    - **第 27 行**: 更改新创建用户的密码。 - **第 39 行**: 添加用户到 Samba 服务。 ##### 2.3 注意事项 - **参数处理**: `$argc` 和 `$argv` 用于处理命令行参数。 - **spawn 命令**: 根据实际情况调整 `spawn` ...

    Linux下交互式与非交互式修改用户密码的例子

    在Linux系统管理中,修改用户密码是一项常见的任务。本文主要探讨了两种方法——交互式和非交互式修改用户密码,并提供了一个使用脚本自动化这一过程的示例。 1. **交互式修改用户密码**: 使用`passwd`命令是交互...

    Perl批量远程执行指令脚本

    3.支持修改用户密码、切换用户的密码、Root密码 4.支持日志记录操作指令、屏幕输出 5.支持断线重连。因为是单进程单线程的,所以有可能执行到后面的机器SSH连接已断开。 --- 1.语言字符需要zh_CN.UTF-8 2.需要Perl ...

Global site tag (gtag.js) - Google Analytics