2016-06-13 4 views
0

2 개의 프롬프트 (y/n)를 허용하는 프로그램이 있습니다. 예를 들어 :"at 명령"에 의해 호출 된 프로그램에 입력을 보냅니다.

stopprogram 이제

do you want to stop the program (Y/N)? y 
do you want to send an email to the admin about it (Y/N)? y 

, 나는 '에서'명령을 사용하는 것을 자동화하고 싶습니다. 다음은 Solaris에서는 작동하지만 Linux RHEL에서는 작동하지 않습니다. RHEL :

at now +5 minutes << EOF 
> for i in {1..2} 
> do 
> echo 'y' 
> done | stopprogram 
> EOF 
commands will be executed using /usr/bin/bash 
... 
... 

어떤 아이디어가 있습니까? 감사!

+0

당신은 프로그램 실행을 자동화한다고 말하지만,'at'는 cmd 라인을 필요로하고 프로그램을 시작하기 위해 Enter 키를 누르십시오. 'crontab'에 대해 알고 있습니까? 'cron' 서브 시스템을 사용하면 프로그램을 완전하게 시작할 수 있습니다. 또한 Q를 향상시키고 RH에서 어떤 일이 일어나는 지 알려줄 필요가 있습니다. 전혀 아냐? 또는 오류 메시지가 표시됩니다. Q에 정확한 오류 메시지를 복사/붙여 넣기 (그리고 강조 표시된 텍스트의 편집 도구에서'{}'도구를 사용하여 올바른 형식으로 유지). 마지막으로 'at'가 RH에서 작동하지만 사용 권한 문제가 발생했다고 생각해보십시오. 행운을 빕니다. – shellter

+1

문이 단순히 "작동하지 않습니다"라는 문제가있을 때 솔루션을 제공하기가 어렵습니다. 질문을 편집하여 의 예상 결과와 그 결과가 실제 결과 인 과 다른지 확인하십시오. 무엇이 좋은지에 대한 힌트를 얻기 위해 [ask]를 참조하십시오. 설명. –

답변

1

<<EOF 사이의 공백으로 인해 문제가 발생한 것일 수 있습니다.

모든 인수로 구성된 행을 반복적으로 출력하기위한 특별한 프로그램 yes이 있음에 유의하십시오. 기본적으로 'y'를 출력합니다. 특히 이러한 프롬프트를 통해 스크립트 된 흐름을 강제하기 위해 작성되었습니다.

따라서 명령의 짧은 버전은 다음과 같이 표시됩니다

at now +5 minutes <<EOF 
    yes | stopprogram 
EOF 
+0

여기서'<< 'EOF'가 사용되지 않는 한 문서는 작은 따옴표 문자열로 취급됩니다. (마커 주변의 작은 따옴표를 참조하십시오.) – andlrc

+0

행운이 없습니다. 방금 입력하면 : "예 | stopprogram"작동합니다. 하지만 'at'명령을 사용하여 올바르게 가져올 수 없음 – user3772839

+0

어떤 종류의 문제가 발생합니까? – Leon

0

나는 해결책을 찾아 냈다. 작동 여부 :

at now+5 min <<EOF 
bash -l -c 'yes | stopprogram' 
EOF 

그게 전부입니다!