1

OpenWRT ルーターで実行する ASH スクリプトを作成しようとしています。

nodogsplash をインストールしました。これは、ルーターで最初に認証を試みるときにログイン ページを表示します。

nodogsplash には、パスワードを変更できるコマンド ライン ユーティリティが付属しています。

ndsctl password newpassword

そのため、パスワードを新しいものに変更するために 1 日 1 回実行する cron ジョブとして設定できるスクリプトを作成しようとしていますが、正しく出力するのに苦労しています。私のスクリプトatm:

#!/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 に答える