当前位置: 首页 > 面试题库 >

通过ssh更改Linux服务器上密码的脚本

华展鹏
2023-03-14
问题内容

我们的IT环境中有许多Red Hat Linux服务器。我的团队成员要求我编写一个脚本(最好是Shell脚本)以使用SSH一次更改每个用户的密码。

我试图找到一种解决方案,但是我发现许多脚本都在使用Expect。我们没有在服务器上安装Expect,系统管理员拒绝让我们安装它。此外,用户没有root访问权限,从而passwd --stdinchpasswd无法使用。

有什么方法可以编写脚本,以便用户可以运行该脚本并更改列表中所有服务器上仅其自己用户的密码?


问题答案:

不需要安装远程计算机。您可以在本地工作站或VM(虚拟盒)或任何*
nix盒上安装Expect,并编写一个调用此.ex(期望)脚本的包装器(发行版之间的细微变化,已在CentOS 5/6上进行了测试) ):

#!/usr/bin/expect -f
# wrapper to make passwd(1) be non-interactive
# username is passed as 1st arg, passwd as 2nd

set username [lindex $argv 0]
set password [lindex $argv 1]
set serverid [lindex $argv 2]
set newpassword [lindex $argv 3]

spawn ssh $serverid passwd
expect "assword:"
send "$password\r"
expect "UNIX password:"
send "$password\r"
expect "password:"
send "$newpassword\r"
expect "password:"
send "$newpassword\r"
expect eof


 类似资料:
  • Linux服务器/etc/ssh/sshd_config已开启密码验证, 但是ssh连接Linux服务器,为何直接报错?根本没出现用户名及密码输出提示符?

  • 本文向大家介绍Linux ssh服务器配置代码实例,包括了Linux ssh服务器配置代码实例的使用技巧和注意事项,需要的朋友参考一下 使用如下终端命令可以在 Linux 主机中安装 ssh服务器sudo apt-get install openssh-server 查看当前的虚拟机的ip地址 在PC上查看ip地址 【备注】pc和linux虚拟机在同个网段的 测试他们是否可以ping 【可能存在一

  • 问题内容: 我试图通过这样的本地服务器上的ssh命令在远程linux服务器上执行命令: ssh myremoteserver’类型ttisql’ 其中ttisql是我的远程计算机路径上的可执行文件。 运行此命令的结果是: bash:第0行:类型:ttisql:未找到 当我只是先连接并执行以下操作: ssh myremoteserver 然后输入命令: [myuser @ myremoteserve

  • 本文向大家介绍ubuntu16.04服务器配置ssh免密码登录,包括了ubuntu16.04服务器配置ssh免密码登录的使用技巧和注意事项,需要的朋友参考一下 在客户端操作 文件位置写/home/try/.ssh/server_rsa,不使用默认值,我命名为server_rsa担心影响到git的key(因为我的git使用的是默认值) ssh-copy-id root@123.45.56.78(你的

  • 问题内容: 我想在ssh上建立到我的mysql服务器的ssh隧道。 理想情况下,就像我直接连接一样,我将返回一个mysqli db指针。 我在没有SSH2库的共享主机上,但是我可以使用PECL在本地安装它们。 如果有一种方法可以使用本机命令,那就更好了。 我当时在想类似的东西,但是如果没有这些库,它将无法正常工作。 谁有想法?我正在liquidweb上运行共享的CentOS linux主机。 关于