一:通过登陆远程root修改密码通过远程登陆修改netseek用户密码为52netseekecho "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 52linuxtone 转载请保留固定链接: https://linuxeye.com/program/1055.html |