2011-09-16 4 views
-1

오 마이 갓! 약 에 대한 모든 시도는입니다. 터미널에서 루트로 변경할 때 입력 비밀번호를 자동화하는 스크립트를 작성하고 싶습니다. 내가 암호 붙어이쉘 스크립트 터미널에서 자동화

expect -i 
spawn sudo pmset schedule sleep "{query}" expect { Password: send "password\r" }; interact;  
exit 

결과

expect1.1> spawn sudo pmset schedule sleep "06/19/11 23:40:00" expect { Password: echo "lovegun\r" }; interact; exit 
spawn sudo pmset schedule sleep 06/19/11 23:40:00 expect Password: send "password\r" 
Password: 

같은 내 코드 조회 : 누군가가 내 코드를 볼 수 있습니까? 이 문제가 무엇입니까. 당신이 당신의 비밀번호가 기대 스크립트에 묻혀있는 거라면

expect -c ' 
    proc abort {} { 
    puts "You have Authenticated\n" 
    exit 1 
    } 
    spawn sudo pmset schedule sleep "{query}" 
    expect { 
    Password:  { send "password\n" } 
    default   abort 
    } 
    puts "Finished OK\n" 
' 

마지막으로 당신이하지 않는, 그래서 당신이 중 1) 변경 pmset 설정 - 사용자 ID를 실행할 수, 대답

+0

암호 보내기 \ n "'작동하지 않았습니다. 나는 지금 추측하고있다. 그래서 나는 나의 부정확 한 대답을 쓰러 뜨렸다.'puts "$ passwd \ n"'를 사용할 필요가있다. http://stackoverflow.com/questions/5575702/help-with-expect를 보았는가? 당신의 연구에서 --within-a-bash-script는 유망 해 보입니다 ... 또한, 쉘을위한 태그를 추가하십시오, bash? 당신은 당신의 문제에 대해 더 많은 눈을 갖게 될 것입니다. 행운을 빕니다. – shellter

+0

감사합니다. 작동합니다. :디 – Lunayo

답변

2

발견 sudo를 사용해야하거나 2) 비밀 번호를 입력 할 필요가 없도록 sudo에 대한 NOPASSWD 액세스 권한을 사용자에게 부여하십시오. 어느 쪽이든 당신은 파일에 암호를 저장하지 않아도됩니다.