当前位置: 首页 > 知识库问答 >
问题:

一个命令中的Passwd不起作用

吕文林
2023-03-14

我开发了一个工具,使用JSch(一个java库,用于通过ssh与其他机器通信)一次性向不同的linux机器发送一行命令

因此,我们的客户需要更改所有机器上的密码。谷歌帮助我达到了这一点:

echo-e“123\n123”| passwd username其中“123”是新密码。

命令将执行,但这始终是输出:

[root@QNA-XR1 ~]# echo -e "123\n123" | passwd
Changing password for root
New password:
Retype password:
passwd: password for root is unchanged

这表明命令没有成功。

请注意,这是一个运行linux的小型设备。这是一个私人编译的版本,尽可能紧凑。其实我对linux了解不多!

这是机器信息:

[root@QNA-XR1 ~]# uname -a
Linux QNA-XR1 2.6.22-XR100-v1.1.7 #1 Tue Aug 19 22:55:50 EDT 2008 ppc unknown

密码帮助:

[root@QNA-XR1 ~]# passwd --help
BusyBox v1.7.3 (2008-01-09 00:06:30 EST) multi-call binary

Usage: passwd [OPTION] [name]

Change a user password. If no name is specified,
changes the password for the current user.

Options:
        -a      Define which algorithm shall be used for the password
                (choices: des, md5)
        -d      Delete the password for the specified user account
        -l      Locks (disables) the specified user account
        -u      Unlocks (re-enables) the specified user account

回声帮助

[root@QNA-XR1 ~]# help echo
echo: echo [-neE] [arg ...]
    Output the ARGs.  If -n is specified, the trailing newline is
    suppressed.  If the -e option is given, interpretation of the
    following backslash-escaped characters is turned on:
        \a      alert (bell)
        \b      backspace
        \c      suppress trailing newline
        \E      escape character
        \f      form feed
        \n      new line
        \r      carriage return
        \t      horizontal tab
        \v      vertical tab
        \\      backslash
        \num    the character whose ASCII code is NUM (octal).

    You can explicitly turn off the interpretation of the above characters
    with the -E option.

非常感谢您的帮助。

共有3个答案

戚飞虎
2023-03-14

您可以使用单个命令更改用户密码。

echo-e“密码\n密码”| sudo-S passwd testuser

那存
2023-03-14

/bin/passwd可能正在打开/dev/tty以强制从终端而不是管道读取数据

你最好使用Crypt()来加密(散列,真的)你的新密码,然后在/etc/影(对于有密码的系统)或/etc/Passwd(对于没有密码的系统)中替换密码散列...这有一个缺点,就是有点依赖操作系统,但它不会进入奇怪的tty游戏。

您还可以强制分配ssh中的tty-ssh可以使用或不使用tty进行操作。然后你会在两次以明文发送密码之前增加几个延迟——这种方法不太依赖操作系统,但是tty游戏有时会不那么有趣。

赖明煦
2023-03-14

您可以使用chPasswd(作为root,但它不安全):

# echo "user:passwd" | chpasswd
 类似资料:
  • 我只是在Windows中安装jdk和jre版本8。环境变量已设置。我尝试在cmd中运行“java-version”,它显示了安装的java版本。但是当我尝试用“javac projectname”编译java项目时,系统说javac不能被识别为内部命令或外部命令。有谁能告诉我怎么修好它吗? 下面是我的环境变量: C:\users\foody>echo%路径%C:\ProgramData\Oracl

  • 我目前正试图将静音功能编程到discord机器人上。它已启用服务器权限“静音成员”。 这是每当我调用mute命令时运行的代码: 因此,此代码的连续调用应该切换为静音,但message.channel.send.每次都会发送false,表明该成员从未静音。我不清楚静音功能是如何与不和谐一起工作的。我在某处读到它是基于角色的——如果是这样,那么setMute()命令的意义是什么? 文档:https:/

  • 问题内容: 我最近刚刚将我的Selenium IDE代码导出到了Selenium Web驱动程序。我发现很多在IDE中可用的命令要么无法运行,要么seleniumWeb驱动程序声称根本不支持。到目前为止,我一次只解决了一个问题,这并不理想。 目前,我正在研究为什么以前在Selenium IDE中无法使用Web驱动程序单击按钮的原因。我的浏览器是FF 13,我的操作系统是Ubuntu。 代码段 我以

  • 命令是否在的命令行中工作? 第一步: C:\Users\Rezaul 步骤2: C:\Users\Rezaul http://localhost:8000

  • 问题内容: 我正在编写一个shell脚本,以自动添加新用户并更新其密码。我不知道如何获取passwd来从shell脚本中读取,而不是交互式地提示我输入新密码。我的代码如下。 问题答案: 来自“ ”: 所以你的情况 [ 更新 ]评论中提到了一些问题: 您的命令可能没有选项:按照ashawley的建议使用实用程序。 如果您使用的不是bash外壳,则“echo”可能不是内置命令,外壳将调用。这是不安全的

  • 我是PSQL新手。在终点站。我输入了以下命令 我面临以下错误: PSQL:无法连接到服务器:没有这样的文件或目录服务器是否在本地运行并接受Unix域套接字“/var/run/PostgreSQL/.s.pgsql.5432”上的连接? 请有人在这方面帮助我。