2017-11-17 16 views
0

DD-WRT 웹 인터페이스에서 라우터의 MAC 주소를 무작위로 추출하는 작은 스크립트를 테스트하고 있습니다. 스크립트는 awk를 사용하여 무작위 화를 수행합니다. 이 스크립트는 awk가 shebang (#!/bin/bash)없이 (awk없이 shebang을 포함하여) 사용되었을 때 작동합니다. 그러나,이 스크립트가 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; 

이 또한 작품 (오두막을 가지고,하지만 AWK) :

#!/bin/bash 

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

가 작동하지 않습니다 (오두막

작품 (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을 사용하고 shebang을 사용하려면 스크립트가 필요하므로 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 블록을 사용하여 다시 작성할 수 있습니다; 한 번이면 충분합니다.