2017-11-17 34 views
0

DD-WRT Webインターフェイスで、ルータのMACアドレスをランダム化する小さなスクリプトをテストしています。スクリプトはawkを使ってランダム化を行います。このスクリプトは、awkがの012Bシバン(#!/ bin/bash)なしで使用されている場合(awkではなくシバンを含む)と同様に動作します。ただし、シンプル awkの両方が使用されている場合、スクリプトは機能しません。BashとAwk Strange Behavior(DD-WRT)

nvram set mac_clone_enable=1; 
nvram set def_hwaddr=$(awk 'function m(n){srand(systime()+n);return":"(10+int(rand()*99));}END{print "A4"m(1)m(2)m(3)m(4)m(5);}'); 
nvram commit; 
rc restart; 

はまた、作品行(shebangを持って、ないのawk):

#!/bin/bash 

nvram set mac_clone_enable=1; 
nvram set def_hwaddr="02:44:55:66:77:88"; 
nvram commit; 
rc restart; 

が動作しない行(shebang

ワークス(awkの、ないシェバングを使用しています) awk):

#!/bin/bash 

nvram set mac_clone_enable=1; 
nvram set def_hwaddr=$(awk 'function m(n){srand(systime()+n);return":"(10+int(rand()*99));}END{print "A4"m(1)m(2)m(3)m(4)m(5);}'); 
nvram commit; 
rc restart; 

awkを使ってシバンを持っているので、cronジョブで使うことができるスクリプトが必要です。何が問題なの?

+2

wrt「スクリプトは機能しません」 - どのように動作しないかを教えてください - 出力が間違っている、出力がありません、コアダンプ、エラーメッセージなど...問題を診断するために整備士に依頼するときうまくいけば、あなたの車を指差すだけではなく、「うまくいかない、何が問題になるのだろう」と言いたいのです。 –

+0

@EdMorton MACアドレスが動作していないときに変更されていませんでした。ユーザーkarakfaはソリューションを提供しました。 – user3163495

+0

それが問題だった場合、あなたが言った解決策が実際に同じawkバージョンで動作することは、可能ではありません。私は実際の問題は、あなたがawkの各バージョンを各スクリプトで呼び出すことだと思っています。それはあなたがいなくても後であなたを噛ませるために戻ってくるものです。 –

答えて

1

awk入力ファイルが必要です。代わりに

A4:72:63:62:91:102 

あなたはまた、ランダムシードたびに再初期化する必要はありません返さ

awk 'function r() {return ":"(10+int(rand()*99))} 
    BEGIN{srand(); print "A4" r() r() r() r() r()}' 

BEGINブロックを使用して書き換えることができます。一回だけで十分です。