레이블이 Batch인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Batch인 게시물을 표시합니다. 모든 게시물 표시

2014년 11월 21일 금요일

원격데스크탑 포트 번호 변경.

스누피님이 만드신 배치파일 사용으로 대부분의 서버는 포트 변경이 정상적으로 이루어 졌다.

그러나 몇몇 서버, 특히 citrix 가 설치된 서버는 조금 문제가 있었다.

1. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp\PortNumber 만 변경 해서는 적용이 되지 않았다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp\PortNumber 도 같이 변경해 주어야 제대로 접속이 되었다.

2. citrix 같은 경우 원격데스크탑 서비스만 재 실행한다고 해서 제대로 구동되지 않는 다. 아예 재시작을 해주어야 됐음.

 

MS의 공식 fix 문서에서의 프로그램으로 실행해도 역시 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp\PortNumber 만 고침. 문서상에서도 그러함.

 

다른 검색결과에서는 두개 다 변경 하는 걸로 설명되어 있는 것도 여럿 있음. 두개 값의 차이점은 모르겠음.

 

아래는 스누피님의 배치파일 내용. 주석 달음.
@echo off
echo.
echo.
echo 원격 데스크톱 포트 변경하기 by snoopy
echo 지원 OS : 윈도우 비스타, 7, 2008, 2008 R2
echo.
set /p port=포트 번호 입력 :

REM 레지스트리 위치 같은 경우 윈도우 2000 서버 역시 동일 함.
REM fDenyTSConnections 0이면 원격데스크탑 활성화, 1이면 비활성화.
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
REM 원격데스크탑 포트 변경.
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d %port% /f
REM 원격데스크탑 포트 변경, 이건 추가 하였음.
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber /t REG_DWORD /d %port% /f
if errorlevel 1 (
cls
echo.
echo.
echo 우클릭 해서 관리자 권한으로 실행해주세요.
pause>nul
exit
)
REM 윈도우 2000 같은 경우 지원하지 않는 명령어임. 해서 2000이하에서는 안됨.
netsh advfirewall firewall add rule name="원격 데스크톱 %port%" dir=in action=allow protocol=tcp localport=%port%
net stop /y TermService
net start /y TermService
echo 모든 작업이 완료되었습니다.
pause>nul
exit

 

 

2014년 4월 29일 화요일

윈도우 배치 split 명령어

윈도우 커맨드로 원하는 결과 값만 결과값을 나타내기

예를 들어 dir 명령어를 치면 다음과 같이 나온다.

2014-02-21 오후 11:13 <DIR> Contacts
2014-04-26 오후 02:04 <DIR> Desktop
2014-04-29 오전 09:57 <DIR> Documents
2014-04-29 오후 01:05 <DIR> Downloads

여기서 해당 날짜와 시간만 구하고 싶을 때는 다음과 같이 적어 넣는다.
for /f "tokens=1,2,3 delims= " %i in ('dir') do @echo %i %j %k

출력결과 :

2014-04-09 오전 09:42
2014-04-08 오후 06:15
2014-04-08 오후 09:03
2014-03-21 오전 08:57
2014-03-20 오후 04:47
2014-03-20 오후 04:30

사용법은 delims로 나눌 기준을 구한다. 위에서는  (공백)으로 처리 했다.

tokens는 delims로 나눴을 때 몇번째 값을 출력할 지를 설정.

위에서는 1,2,3 을 설정했으므로 공백 기준 첫번째는 '날짜'이고, 다음은 '오후',  세번째는 '시간' 되겠다.

('dir') 부분은 명령어를 나타내고, %i %j %k는 토큰에서 지정된 값을 출력하는 변수이다.

출처는 여기

2014년 2월 11일 화요일

PING 체크 배치 스크립트

ip_list.txt 안에 아이피를 넣어 놓고 스크립트를 실행하면 result.txt 파일로 결과를 생성한다.
@echo off
setlocal enabledelayedexpansion

REM http://stackoverflow.com/questions/12408673/how-to-ping-multiple-servers-and-return-ip-address-and-hostnames-using-batch-scr
REM result.txt파일은 없어도 됨.
REM ip_list.txt 파일은 있어야 됨.

set OUTPUT_FILE=result.txt
>nul copy nul %OUTPUT_FILE%
for /f %%i in (ip_list.txt) do (
    set SERVER_ADDRESS=ADDRESS N/A
    for /f "tokens=1,2,3" %%x in ('ping -n 1 %%i ^&^& echo SERVER_IS_UP') do (
    		echo %%i is checking...
        if %%x==Pinging set SERVER_ADDRESS=%%y
        if %%x==Reply set SERVER_ADDRESS=%%z
        if %%x==SERVER_IS_UP (set SERVER_STATE=UP) else (set SERVER_STATE=DOWN)
    )
    echo %%i [!SERVER_ADDRESS::=!] is !SERVER_STATE! >>%OUTPUT_FILE%
)

2013년 1월 29일 화요일

윈도우 telnet 자동 로그인

윈도우에서 telnet 자동 접속 후 명령어 실행하는 프로그램입니다.

확장자는 .vbs 로 합니다.

사용법

1. C:\oneIP.txt 파일을 만들고 한줄씩 접속할  아이피를 넣어준다.

2.아래 소스를 아무이름으로 .vbs 확장자로 만든다.

ex)telnet_auto.vbs

3. 실행한다.

ps. 접속 후 실행할 명령은 알아서 넣기.


set WshShell = WScript.CreateObject("WScript.Shell")
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const ipListFile = "C:\oneIP.txt"
Set Shell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")

If FSO.FileExists(ipListFile) Then
Set SwitchIP = FSO.opentextfile(ipListFile, ForReading, False)
Else
Wscript.Echo "This file (" + ipListFile + ") does not exist."
Wscript.Quit
End If
Dim userId
Dim userPw

userId = "yourid"
userPw = "yourpass"

WScript.Echo "Don't touch Anything!!"

While Not SwitchIP.atEndOfStream
IP = SwitchIP.Readline()
WshShell.Run "cmd"
WScript.Sleep 100
WshShell.AppActivate "C:\Windows\system32\cmd.exe"

WScript.Sleep 100
rem telnet [address] [port]
WshShell.SendKeys "telnet " + IP + " 23{ENTER}"

WScript.Sleep 2000
rem [id]
WshShell.SendKeys userId + "{ENTER}"

WScript.Sleep 2000
rem [pwd]
WshShell.SendKeys userPw + "{ENTER}"

WScript.Sleep 1000
rem [command what you want]
WshShell.SendKeys "show ver{ENTER}"

WshShell.SendKeys "{ENTER}"
WScript.Sleep 2000
WshShell.SendKeys "exit{ENTER}"

Wend
WScript.Sleep 2000
WScript.Echo "Completed."