1

我正在尝试编写一个 ASH 脚本以在我的 OpenWRT 路由器上运行。

我已经安装了 nodogsplash,当你第一次尝试通过路由器进行身份验证时,它会显示一个登录页面。

nodogsplash 带有一个命令行实用程序,可让您更改密码:

ndsctl password newpassword

因此,我正在尝试编写一个脚本,我可以将其设置为每天运行一次的 cron 作业以将密码更改为新的密码,但是我正在努力让它正确输出。我的脚本自动取款机:

#!/bin/ash
local randompassLength
local pass
randompassLength=8
pass=</dev/urandom tr -dc A-Za-z0-9 | head -c $randompassLength
ndsctl password "$pass"

当我运行它时,我得到输出:

miqM2Ah6Password set to .

这似乎在回声开始时放弃了密码并将密码设置为空白。

有什么想法我在这里做错了吗?

4

1 回答 1

1

您缺少命令替换:

pass=$(</dev/urandom tr -dc A-Za-z0-9 | head -c $randompassLength)

或使用反引号:

pass=`</dev/urandom tr -dc A-Za-z0-9 | head -c $randompassLength`
于 2012-11-14T04:06:04.990 回答