由脚本

时间:2018-03-08 07:48:52

标签: shell ssh passwords

我一直在尝试通过一个简单的shell脚本在我的Arch Linux系统上建立一个新用户,遵循几个来源的建议,这些来源指出printf "$password\n$password\n" | (passwd $user)或类似echo -e "$password\n$password\n" | (passwd $user)应该诀窍。

然而,在这样做的同时,虽然它确实成功并报告密码已更新,但尝试通过ssh登录该用户由于某种原因不起作用。有谁知道为什么,以及如何解决它?

我尝试删除变量,并简单地设置密码和用户静态文本。完全相同的命令行; printf "123abcXYZ\n123abcXYZ\n" | (passwd dummy)在shell中工作,我可以通过ssh登录,但是使用相同的行并将其放在脚本中,它会说密码错误。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这可能是因为密码包含\%等字符,可以由printf解释,也许以下内容可以解决:

printf '%s\n%s\n' "$password" "$password"

也可以写(因为printf隐式循环)

printf '%s\n' "$password" "$password"

答案 1 :(得分:0)

高兴 - 我发现了错误!

它与passwd命令或字符完全无关。相反,仅仅为分配用户的组评估变量只是一个错误 - 我的坏!谢谢你的答案:)