2017-04-13 8 views
0

첫째, 저는 총 newb이므로 키보드 주위에 있어서는 안됩니다. 즉, 사용자가 목록에서 선택하여 원격 장치에 연결할 수 있도록하는 DCL .COM 파일을 작성하려고합니다.DCL 프로그래밍 - 원격 연결

내가 원하는 것은 장치를 선택하여 연결하고 장치에서 연결을 끊으면 다시 시작할 수 있도록하려는 것입니다. 그것은 원격 연결을 종료 한 후에도 계속 내 버리게됩니다.

운영 체제는 OpenVMS입니다. 다음은 코드입니다 (여기서 xxx.xxx.xxx.xxx는 원격 시스템의 IP 주소입니다).

도움이 될 것입니다.

$!  MRV Terminal Server Connection Menu 
$!  
$ ON ERROR THEN $ LOGOUT 
$ GOMENU: 
$! 
$ CLS:==SET TERM/WIDTH=80 
$ WT:==WRITE SYS$OUTPUT 
$! 
$ CLS 
$ WT " MRV Terminal Server Connection Menu " 
$ WT " " 
$ WT " 1  MRV 1" 
$ WT " 2  MRV 2" 
$ WT " 3  MRV 3" 
$ WT " 4  MRV 4" 
$ WT " 5  MRV 5" 
$ WT " 6  MRV 6" 
$ WT " 7  MRV 7" 
$ WT " 8  MRV 8" 
$ WT " 9  MRV 9" 
$ WT " 10  MRV 10" 
$ WT " 11  MRV 11" 
$ WT " 12  MRV 12" 
$ WT " 13  MRV 13" 
$ WT " 14  MRV 14" 
$ WT " " 
$ WT " " 
$ WT " " 
$ WT " " 
$ WT " "          
$ WT " X  EXIT" 
$ WT " " 
$ INQUIRE ANS "Select the MRV you wish to connect to:" 
$! 
$! 
$ IF ANS .EQS. "X" then goto goodbye 
$!           
$! 
$ IF ANS .EQS. "1" then SSH "[email protected]" 
$! 
$ IF ANS .EQS. "2" then SSH "[email protected]"  
$! 
$ IF ANS .EQS. "3" then SSH "[email protected]" 
$! 
$ IF ANS .EQS. "4" then SSH "[email protected]" 
$! 
$ IF ANS .EQS. "5" then SSH "[email protected]" 
$! 
$ IF ANS .EQS. "6" then SSH "[email protected]" 
$! 
$ IF ANS .EQS. "7" then SSH "[email protected]" 
$! 
$ IF ANS .EQS. "8" then SSH "[email protected]" 
$! 
$ IF ANS .EQS. "9" then SSH "[email protected]" 
$! 
$ IF ANS .EQS. "10" then SSH "[email protected]" 
$!           
$ IF ANS .EQS. "11" then SSH "[email protected]" 
$!             
$ IF ANS .EQS. "12" then SSH "[email protected]"   
$!    
$ IF ANS .EQS. "13" then SSH "[email protected]" 
$!    
$ GOODBYE: 
$!EXIT 
+0

. 약간의 것들을 명확히 할 수 있습니까? 마지막'if' 다음에'$ goto GoMenu'를 추가하면 저장 프로 시저에서 계속 유지해야합니다 (목표 인 경우). '$ on error then goto GoMenu'는 세션이 종료 될 때 SSH가 오류로 종료되면 도움이 될 수 있습니다. [참고] (http://h41379.www4.hpe.com/doc/84final/9996/9996pro_150.html). – HABO

+0

입력 해 주셔서 고맙습니다. "저를 버리십시오"라는 말은 메뉴로 돌아가는 대신 VMS 프롬프트로 되돌아 갔음을 의미합니다. 목표는 사용자가 원격 세션을 종료 한 후 메뉴로 돌아가는 것입니다. –

+0

또한 목록에없는 선택 사항을 선택하면 종료 상태를 유지합니까? 예를 들어, 사용자가 W를 입력하면 프로그램이 종료되고 사용자가 VMS 프롬프트로 돌아갑니다. –

답변

2
  1. 터미널 설정을 깨끗이하지 마십시오!
  2. INQUIRE는 나쁘거나 더 좋지는 않지만 지금은 충분히 좋습니다. 그때를 elses
  3. 사용 F $ 유형은 심볼이 STRING이 있는지 또는 INTEGER 또는 NOTHING-AT 할 경우 큰 상수 텍스트의 덩어리
  4. 테이블 조회 또는 연관 배열에 대한
  5. 사용 TYPE 너무 오래보다 훨씬 깨끗하다 몇 가지 아이디어에 대한 -ALL

확인이 아웃 :

"가 시작 어디 돌아" "나를 덤핑"약 희미하게 비 기술적 인 뭔가가있다
$ ! MRV Terminal Server Connection Menu 
$ ! 
$ CLS :== TYPE/PAGE NL: ! Please don't muck with my screen setting as in: SET TERMINAL/WIDTH=80 
$ WT :== WRITE SYS$OUTPUT 
$ ANS_1 = "aap.xxx.xxx.xxx" 
$ ANS_2 = "noot.xxx.xxx.xxx" 
$ ANS_14 = "mies.xxx.xxx.xxx" 
$ ! 
$ Menu: 
$ ! 
$ ! If SSH (or anything else) causes an error, go back to the menu. 
$ ! It is placed here because it needs to be set again after each error. 
$ on error then $ goto Menu 
$ ! 
$ type/page sys$input: 

    MRV Terminal Server Connection Men 

    1  MRV 1 
    2  MRV 2 
    : 
    14 MRV 14 

    X  EXIT" 
$ ! 
$ INQUIRE ANS "Select the MRV you wish to connect to:" 
$ ! 
$ if ANS .eqs. "X" then exit 
$ if f$type(ANS_'ANS') .eqs. "" 
$ then 
$ ! Handle any unexpected input. 
$ WT "Beg your pardon? ''ANS' ? " ! Immediately followed by clearing the screen. Sigh. 
$ WAIT 0:0:3 
$ ! 
$ ! We did what they wanted. How else may we serve? 
$ goto Menu 
$ endif 
$ command = "SSH """ + ANS_'ANS + """" 
$ write sys$output "Going to execute : " + command 
$ 
$! 'command  ! Remove Comment for real action 
+0

6. 로컬 사용을위한 전역 기호를 만들지 마십시오. 7. 검사없이 오류를 처리하는 대신 오류 처리 코드를 사용하여 오류를 처리하십시오. – HABO

+0

HEIN - 테스트를 거쳤으며 잘 작동합니다. HABO의 예제에서이 코드에 두 줄을 추가했습니다. 테스트를 마친 후 MRV 연결을 종료 한 후 DCL 프롬프트로 돌아 왔습니다. 나는 덧붙였다 : '오류가있을 때 goto MENU'와 'goto menu'를 하단에 추가했다. –

0

이 원하는대로 더있을 수 있습니다 :

$ ! MRV Terminal Server Connection Menu 
$ !  
$ CLS :== SET TERMINAL/WIDTH=80 
$ WT :== WRITE SYS$OUTPUT 
$ ! 
$ Menu: 
$ ! 
$ ! If SSH (or anything else) causes an error, go back to the menu. 
$ ! It is placed here because it needs to be set again after each error. 
$ on error then $ goto Menu 
$ ! 
$ CLS 
$ WT " MRV Terminal Server Connection Menu " 
$ WT " " 
$ WT " 1  MRV 1" 
$ WT " 2  MRV 2" 
$ WT " 3  MRV 3" 
$ WT " 4  MRV 4" 
$ WT " 5  MRV 5" 
$ WT " 6  MRV 6" 
$ WT " 7  MRV 7" 
$ WT " 8  MRV 8" 
$ WT " 9  MRV 9" 
$ WT " 10  MRV 10" 
$ WT " 11  MRV 11" 
$ WT " 12  MRV 12" 
$ WT " 13  MRV 13" 
$ WT " 14  MRV 14" 
$ WT " " 
$ WT " " 
$ WT " " 
$ WT " " 
$ WT " "          
$ WT " X  EXIT" 
$ WT " " 
$ ! 
$ INQUIRE ANS "Select the MRV you wish to connect to:" 
$ ! 
$ if Ans .eqs. "X" 
$ then 
$ goto Houseclean 
$ else if Ans .eqs. "1" 
$ then 
$ SSH "[email protected]" 
$ else if Ans .eqs. "2" 
$ then 
$ SSH "[email protected]" 
$ else if Ans .eqs. "3" 
$ then 
$ SSH "[email protected]" 
$ else if Ans .eqs. "4" 
$ then 
$ SSH "[email protected]" 
$ else if Ans .eqs. "5" 
$ then 
$ SSH "[email protected]" 
$ else if Ans .eqs. "6" 
$ then 
$ SSH "[email protected]" 
$ else if Ans .eqs. "7" 
$ then 
$ SSH "[email protected]" 
$ else if Ans .eqs. "8" 
$ then 
$ SSH "[email protected]" 
$ else if Ans .eqs. "9" 
$ then 
$ SSH "[email protected]" 
$ else if Ans .eqs. "10" 
$ then 
$ SSH "[email protected]" 
$ else if Ans .eqs. "11" 
$ then 
$ SSH "[email protected]" 
$ else if Ans .eqs. "12" 
$ then 
$ SSH "[email protected]" 
$ else if Ans .eqs. "13" 
$ then 
$ SSH "[email protected]" 
$ else 
$ ! Handle any unexpected input. 
$ WT "Beg your pardon?" ! Immediately followed by clearing the screen. Sigh. 
$ endif 
$ ! 
$ ! We did what they wanted. How else may we serve? 
$ goto Menu 
$ !    
$ Houseclean: 
$ ! Nothing else to do. 
$ exit ! Or perhaps you prefer $ logout