스크립트가 로컬 쉘에서만 동작을 합니다. [1]
스크립트가 로컬 쉘에서만 동작을 합니다.
2017-09-15 11:48 - 진형수
안녕하세요.
스크립트를 작성해서
A서버 -> B서버 -> C서버 로 telnet으로 접속하는 스크립트를 만들려고 합니다.
- A서버는 xsh.Session.Open으로 접속을 합니다.
- B서버부터는 xsh.Screen.Send를 통해서 telnet ip와 id/pw를 전송하여 접속합니다.
1. 일반 탭(로컬쉘이 아닌 다른 원격접속 탭) 에서 스크립트 실행을 하면 Session.Open이기 때문에 새 창이 뜹니다.
그 후xsh.Screen.Send를 통해 telnet 접속을 해야 하지만 아무 동작을 하지 않습니다.
새 탭(로컬 쉘) 에서 스크립트를 실행하면 그 창에서 바로 A서버로 접속을 하고, B,C서버로 메세지를 전송하는(xsh.Screen.Send) 스크립트가 동작합니다.
==스크립트==
	//*** WaitForString ***
	xsh.Session.Open("D:\Xshell5\session\A.xsh");
	xsh.Screen.Synchronous = true;
	xsh.Session.Sleep(1000);
	//*** Send ***
	//xsh.Screen.WaitForString("aaa");
	xsh.Screen.Send("echo abc");
	xsh.Screen.Send(String.fromCharCode(13));
	xsh.Screen.Send("telnet B");
	xsh.Screen.Send(String.fromCharCode(13));
	xsh.Screen.WaitForString("ogin:");
xsh.Screen.Send("AAAA");
	xsh.Screen.Send(String.fromCharCode(13));
	xsh.Screen.WaitForString("assword:");
xsh.Screen.Send("BBBB");
	xsh.Screen.Send(String.fromCharCode(13));
2. 로컬 쉘에서 스크립트를 실행시 WaitForString 을 통해 login, passwd를 기다린 후 메시지 전송을 요청했지만, 정상 동작 하지 않습니다.
== 스크립트 ==
	xsh.Screen.WaitForString("ogin:");
xsh.Screen.Send("AAAA");
	xsh.Screen.Send(String.fromCharCode(13));
	xsh.Screen.WaitForString("assword:");
xsh.Screen.Send("BBBB");
	xsh.Screen.Send(String.fromCharCode(13));
==출력==
login : AAAA
BBBB passwd:
Login incorrect
3. 위와 같은 방식 외에 A서버에서 B서버에서 C서버 로 telnet으로 들어가는 xshell5의 기능이 있는지 알고싶습니다.
프로그램 버전 : Xshell 5
스크립트를 작성해서
A서버 -> B서버 -> C서버 로 telnet으로 접속하는 스크립트를 만들려고 합니다.
- A서버는 xsh.Session.Open으로 접속을 합니다.
- B서버부터는 xsh.Screen.Send를 통해서 telnet ip와 id/pw를 전송하여 접속합니다.
1. 일반 탭(로컬쉘이 아닌 다른 원격접속 탭) 에서 스크립트 실행을 하면 Session.Open이기 때문에 새 창이 뜹니다.
그 후xsh.Screen.Send를 통해 telnet 접속을 해야 하지만 아무 동작을 하지 않습니다.
새 탭(로컬 쉘) 에서 스크립트를 실행하면 그 창에서 바로 A서버로 접속을 하고, B,C서버로 메세지를 전송하는(xsh.Screen.Send) 스크립트가 동작합니다.
==스크립트==
	//*** WaitForString ***
	xsh.Session.Open("D:\Xshell5\session\A.xsh");
	xsh.Screen.Synchronous = true;
	xsh.Session.Sleep(1000);
	//*** Send ***
	//xsh.Screen.WaitForString("aaa");
	xsh.Screen.Send("echo abc");
	xsh.Screen.Send(String.fromCharCode(13));
	xsh.Screen.Send("telnet B");
	xsh.Screen.Send(String.fromCharCode(13));
	xsh.Screen.WaitForString("ogin:");
xsh.Screen.Send("AAAA");
	xsh.Screen.Send(String.fromCharCode(13));
	xsh.Screen.WaitForString("assword:");
xsh.Screen.Send("BBBB");
	xsh.Screen.Send(String.fromCharCode(13));
2. 로컬 쉘에서 스크립트를 실행시 WaitForString 을 통해 login, passwd를 기다린 후 메시지 전송을 요청했지만, 정상 동작 하지 않습니다.
== 스크립트 ==
	xsh.Screen.WaitForString("ogin:");
xsh.Screen.Send("AAAA");
	xsh.Screen.Send(String.fromCharCode(13));
	xsh.Screen.WaitForString("assword:");
xsh.Screen.Send("BBBB");
	xsh.Screen.Send(String.fromCharCode(13));
==출력==
login : AAAA
BBBB passwd:
Login incorrect
3. 위와 같은 방식 외에 A서버에서 B서버에서 C서버 로 telnet으로 들어가는 xshell5의 기능이 있는지 알고싶습니다.
프로그램 버전 : Xshell 5
Re: 스크립트가 로컬 쉘에서만 동작을 합니다.
2017-09-18 14:08 - 넷사랑
안녕하십니까?
넷사랑컴퓨터 기술지원입니다.
1. 스크립트는 현재 세션에 대해서 작동합니다. 보여 주신 스크립트는 새로운 세션을 열고 나머지 동작은 현재 세션에서 진행합니다.
2. xsh.session.sleep() 함수를 적절히 사용해 보세요.
xsh.Screen.WaitForString("ogin:");
xsh.Screen.Send("AAAA");
xsh.Screen.Send(String.fromCharCode(13));
xsh.Screen.WaitForString("assword:");
xsh.session.sleep(1000);
xsh.Screen.Send("BBBB");
xsh.Screen.Send(String.fromCharCode(13))
3. 단순히 다단계 로그인을 위한 것이라면 세션 속성 내의 '로그인 스크립트' 기능을 사용해 보세요.
세션 등록 정보 -> 연결 -> 로그인 스크립트
wait(expect)와 send로 구성되어 있습니다. 암호를 포함하여야 하므로 스크립트보다는 암호 문자열 숨김 기능이 있는 르그인 스크립트 기능을 추천합니다.
감사합니다.
넷사랑컴퓨터 기술지원입니다.
1. 스크립트는 현재 세션에 대해서 작동합니다. 보여 주신 스크립트는 새로운 세션을 열고 나머지 동작은 현재 세션에서 진행합니다.
2. xsh.session.sleep() 함수를 적절히 사용해 보세요.
xsh.Screen.WaitForString("ogin:");
xsh.Screen.Send("AAAA");
xsh.Screen.Send(String.fromCharCode(13));
xsh.Screen.WaitForString("assword:");
xsh.session.sleep(1000);
xsh.Screen.Send("BBBB");
xsh.Screen.Send(String.fromCharCode(13))
3. 단순히 다단계 로그인을 위한 것이라면 세션 속성 내의 '로그인 스크립트' 기능을 사용해 보세요.
세션 등록 정보 -> 연결 -> 로그인 스크립트
wait(expect)와 send로 구성되어 있습니다. 암호를 포함하여야 하므로 스크립트보다는 암호 문자열 숨김 기능이 있는 르그인 스크립트 기능을 추천합니다.
감사합니다.
이전 조회수: 100
$