SharedIT | 묻고 답하기(AMP)

IP관련 질문

전제조건: 내부 네트워크는 DHCP를 사용중

노트북기준


무선에서 IP를 자동할당 받아서 사용중

유선케이블을 꼽았을시 자동 감지되어 무선연결영역의 아이콘이 자동으로 비활성화(사용안함) 되게끔 할 수 있는 방법이 있을까요?


또는 무선이 연결된 Wifi가 연결끊어짐 이 되어도 가능합니다


참고: 배치파일이을 만들어서 사용하거나

특정 프로그램등을 깔아서 해당 툴이 자동감지하여 무선을 비활성화 해도 상관없습니다

네트워크 관련 레지스트리나 서비스쪽에 수정해서

위의 내용이 동작하게끔 해도상관없습니다


어찌되었든 유선 연결시 자동으로 무선이 비활성화가 목적


Tags : 태그가 없습니다.

10개의 답변이 있습니다.

wansoo
  0 추천 | 약 3년 전

이젠 제대로 작동할거라 확신합니다~ ㅎㅎㅎ

문제 있으면... ㅎㅎ 

뭐... 다시 또 수정해야 되겠고요~ ㅎㅎㅎ

NIC 마다 조금씩 차이도 있고, 예상하지 못한 상황도 있고 그렇네요~

또, 문제 있으면 다시 글 올리세요~ ^^


@echo off

setlocal enableDelayedExpansion


:repeat

set cnt_eth=0

for /f "tokens=1-2 delims=:" %%a in ( 'ipconfig ^| findstr 이더넷' ) do (

  set eth=%%a

  set eth_name=!eth:~8,30!


  for /f "tokens=1-3 delims=: " %%k in ( 'netsh -c int ip show addresses name^="!eth_name!" ^| findstr IP ^| findstr 192.168.200' ) do (

    for /f "tokens=1-3 delims=: " %%t in ( 'wmic nic where NetconnectionID^="!eth_name!" get NetConnectionStatus^,NetEnabled ^| findstr TRUE' ) do (

      set /a cnt_eth=!cnt_eth!+1

    )

  )

)


if !cnt_eth! geq 1 (

  for /f "tokens=1-2 delims=: " %%A in ( 'netsh wlan show interface ^| findstr 이름' ) do (

    netsh interface set interface "%%B" disable

  )

) else (

  for /f "tokens=1-3 delims= " %%K in ( 'wmic nic where "Name like '%%%%Wireless%%%%' and ConfigManagerErrorCode^!^=0" get DeviceID^, NetConnectionID^, ServiceName 2^>nul^| findstr /v NetConnectionID ^| findstr /rc:"[^^ ^<tab^>]"' ) do (

    netsh interface set interface "%%L" enable

  )

)


timeout /t 10 > nul

goto :repeat

parksh2041 | 약 3년 전

안녕하세요 ^^

올려주신 코드로 배치파일 구동을 해보니 제가 원하는 형태로 잘 동작하네요

오랜기간동안 신경 써 주셔서 감사합니다

wansoo
  0 추천 | 약 3년 전

사설 IP 고갈 문제 때문에 더 많은 IP를 사용하고 싶다면,

DHCP 서버 ( 인터넷 공유기 등의) 설정에서 서브넷 마스크를 255.255.255.0 ( /24 )가 아닌, 255.255.254.0 ( /23 )로 변경해서 사용하는 것도 검토해 볼 필요가 있을 것 같아 보이네요.


서브넷마스크가 255.255.255.0 일 경우에는 동일 네트워크 안에 할당할 수 있는 IP가 254개 까지 밖에 안되지만, 255.255.254.0 으로 변경할 경우에는 IP를 최대 510개까지 할당할 수 있게 됩니다.

wansoo
  0 추천 | 약 3년 전

배치 파일을 아래와 같이 만들어서 사용해 보세요.



@echo off

setlocal enableDelayedExpansion


:repeat


set cnt_eth=0

for /f "tokens=1-2 delims=:" %%a in ( 'ipconfig ^| findstr 이더넷' ) do (

  set eth=%%a

  set eth_name=!eth:~8,30!


  for /f "tokens=1-3 delims=: " %%k in ( 'netsh -c int ip show addresses name^="!eth_name!" ^| findstr IP ^| findstr 192.168.200' ) do (

    set /a cnt_eth=!cnt_eth!+1

  )

)


if !cnt_eth! geq 1 (

  for /f "tokens=1-2 delims=: " %%A in ( 'netsh wlan show interface ^| findstr 이름' ) do (

    netsh interface set interface "%%B" disable

  )

) else (

  for /f "tokens=1-5 delims= " %%K in ( 'wmic nic where "Name like '%%%%Wireless%%%%'" get DeviceID^, NetConnectionID^, ServiceName ^| findstr /v NetConnectionID ^| findstr /rc:"[^^ ^<tab^>]" ' ) do (

    netsh interface set interface "%%L" enable

  )

)


timeout /t 10 > nul

goto :repeat



  • 유선 네트워크가 연결되어 사내용 C Class 사설 IP가 할당되었을 경우에 무선 네트워크 인터페이스를 disable 처리하고,

  • 유선 네트워크에 사내용 C Class 사설 IP가 할당되어 있지 않았을 경우에는 무선 네트워크 인터페이스를 enable 처리하도록 만들었습니다.


매 10초마다 반복 점검해서 처리하기 때문에 유선 네트워크에 케이블이 연결되어 IP를 할당 받으면 10초 이내에 무선 네트워크 인터페이스를 사용 중지 처리하고, 유선 케이블이 끊어져서 사내 네트워크 인터페이스에 IP가 할당되어 있지 않으면 무선 네트워크 인터페이스를 다시 사용하도록 처리하게 만들어 봤습니다.


사용 환경에 따라 조금씩 차이가 있어도 잘 작동될거라 희망해 봅니다~ ^^



윈도 시작시 자동 실행되게 스케줄러 등록하는건 아래 링크 참조하면 될거라 생각하고요.

https://rdsong.com/2219

wansoo | 약 3년 전

아래와 같이 수정해서 사용하는게... 좀 더 좋을 것 같아 보이네요.


@echo off

setlocal enableDelayedExpansion


:repeat


set cnt_eth=0

for /f "tokens=1-2 delims=:" %%a in ( 'ipconfig ^| findstr 이더넷' ) do (

  set eth=%%a

  set eth_name=!eth:~8,30!


  for /f "tokens=1-3 delims=: " %%k in ( 'netsh -c int ip show addresses name^="!eth_name!" ^| findstr IP ^| findstr 192.168.200' ) do (

    set /a cnt_eth=!cnt_eth!+1

  )

)


if !cnt_eth! geq 1 (

  for /f "tokens=1-2 delims=: " %%A in ( 'netsh wlan show interface ^| findstr 이름' ) do (

    netsh interface set interface "%%B" disable

  )

) else (

  for /f "tokens=1-3 delims= " %%K in ( 'wmic nic where "Name like '%%%%Wireless%%%%' and ConfigManagerErrorCode^!^=0" get DeviceID^, NetConnectionID^, ServiceName 2^>nul^| findstr /v NetConnectionID ^| findstr /rc:"[^^ ^<tab^>]"' ) do (

    netsh interface set interface "%%L" enable

  )

)


timeout /t 10 > nul


goto :repeat

parksh2041 | 약 3년 전

안녕하세요 ^^

올려주신 코드로 구동을 해 보았습니다.

배치파일을 실행 후(CMD창이 열려있는 상태) 어제와 똑같은 유선을 꼽던 빼던지 

똑 같이  무선이 비활성화 됩니다.. (무선을 살리면 죽고 살리면 죽고)

유선의 사용 유무와 상관없이 동작(무선 비활성화)되는듯 합니다.

감사 합니다. 


wansoo | 약 3년 전

잘 될거라 생각했는데... 이해가 잘 안되네요...

아래 배치 파일을 유선 케이블이 꽂혔을 때와 꽂히지 않았을때를 구분해서, 결과 좀 알려 주실시 있을까요?


@echo off

setlocal enableDelayedExpansion


set cnt_eth=0

for /f "tokens=1-2 delims=:" %%a in ( 'ipconfig ^| findstr 이더넷' ) do (

  set eth=%%a

  set eth_name=!eth:~8,30!


  netsh -c int ip show addresses name="!eth_name!" | findstr IP | findstr 192.168.200


  for /f "tokens=1-3 delims=: " %%k in ( 'netsh -c int ip show addresses name^="!eth_name!" ^| findstr IP ^| findstr 192.168.200' ) do (

    set /a cnt_eth=!cnt_eth!+1

  )

  echo !cnt_eth!

)


if !cnt_eth! geq 1 (

  for /f "tokens=1-2 delims=: " %%A in ( 'netsh wlan show interface ^| findstr 이름' ) do (

    netsh interface set interface "%%B" disable

    echo disable

  )

) else (

  for /f "tokens=1-3 delims= " %%K in ( 'wmic nic where "Name like '%%%%Wireless%%%%' and ConfigManagerErrorCode^!^=0" get DeviceID^, NetConnectionID^, ServiceName 2^>nul^| findstr /v NetConnectionID ^| findstr /rc:"[^^ ^<tab^>]"' ) do (

    netsh interface set interface "%%L" enable

    echo enable

  )

)


pause




위 배치 파일은 반복 작동하지 않고, 한번만 실행되고 끝나는 형태입니다.

유선 케이블이 꽂혔을때와 꽂히지 않았을때 각각 실행해서 결과를 알려 주시면 다시 검토를 해 보도록 하겠습니다.

parksh2041 | 약 3년 전

안녕하세요 

올려주신 코드로 구동을 한 실행 결과 화면입니다..

신경써 주셔서 감사합니다 ^^

처음 무선 네트워크만 연결 후 실행한 결과 화면입니다.

무선 연결된 상태에서 유선 케이블을 꽂아 구동한 화면입니다.

유선 케이블을 빼고 나서 바로 구동한 화면입니다.

유선 케이블은 빠져있는 상태에서 무선 네트워크를 활성화 시킨 후 구동한 화면입니다.

wansoo
  0 추천 | 약 3년 전

스케줄에 부팅시 자동 실행되게 등록한다면 7 이상에서는 CMD 창 표시없이 백그라운드에서 실행될거 같으니 한번 Test  해 보시기를 바라고요.


유선 연결이 없을 경우와, 유선 연결이 되었을 경우에 대해서 아래 배치 파일의 결과를 알려 줘 보실수 있을 까요..?

@echo off

setlocal enableDelayedExpansion

for /f "tokens=1-2 delims=:" %%a in ( 'ipconfig ^| findstr 이더넷' ) do (

  set eth=%%a

  set eth_name=!eth:~8,30!

  netsh -c int ip show addresses | findstr IP

)



parksh2041 | 약 3년 전

유선 연결                                                      유선연결 X

wansoo
  0 추천 | 약 3년 전

유선 네트워크에 IP가 할당되어 있을 경우에 무선 네트워크 인터페이스들을 disable 시키도록 batch file을 만들어 봤습니다.


@echo off

setlocal enableDelayedExpansion


:repeat


set cnt_eth=0

for /f "tokens=1-2 delims=:" %%a in ( 'ipconfig ^| findstr 이더넷' ) do (

  set eth=%%a

  set eth_name=!eth:~8,30!


  for /f "tokens=1-3 delims=: " %%k in ( 'netsh -c int ip show addresses name^="!eth_name!" ^| findstr IP' ) do (

    set /a cnt_eth=!cnt_eth!+1

  )

)


if !cnt_eth! geq 1 (

  for /f "tokens=1-2 delims=: " %%A in ( 'netsh wlan show interface ^| findstr 이름' ) do (

    netsh interface set interface "%%B" disable

  )

)


timeout /t 10 > nul

goto :repeat




매 10초마다 무한 반복하면서 유선 네트워크에 IP가 할당되어 있는지 확인해서, 유선 네트워크에 할당된 IP가 있을 경우에 모든 무선 네트워크 인터페이스를 disable 처리되게 하는 batch file입니다.


이 file을 확장자 .bat인 batch file로 저장하고 ( 저장할때 인코딩 ANSI 로 설정하는것 잊지 말고... ) 스케줄에다 컴퓨터가 처음 켜질때 자동 실행되게 등록해 두고 사용하면 될것 같네요.


커스터마이징이 추가 필요할 수도 있을 것 같긴 하지만...

배치 파일이나 사용된 명령어들에 대해서 조금 아신다면 직접 조금씩 수정해서 사용해도 될 것 같고요.


추가 문의 사항이 있으시면  다시 문의하시고요.

가능한 범위 내에서 알려 드릴 수 있도록 해 보겠습니다.

wansoo | 약 3년 전

아~ 그리고, 배치 파일을 관리자 권한이 있는 계정으로 실행되게해야 합니다.

시스템 장치 속성을 변경시키는 명령이 포함되어 있기 때문에 일반 계정에서는 권한이 없어 제대로 수행되지 못합니다.

parksh2041 | 약 3년 전

안녕하세요.. 먼저 신경쓰주셔서 감사 합니다..^^


위의 로직을 테스트 해봤는데..


배치파일을 실행시키면 CMD창이 열려 있는 상태로 유지 됩니다.


이 상태에서...유선이 연결되던 안되던 무선을 계속 비활성화 시킵니다.


열려있는 CMD창을 닫으면 동작이 멈추는듯 합니다.


제가 원하는 로직을 한번더 디테일하게 정리하자면..(노트북 기준임)


1.배경설명....


사무실에 AP Controller 기반(회의실용)이 구축되어 있습니다..(회의실,종합 사무실 등)


자리에 오면 유선을 사용하도록 권장하고 있습니다..(무선 과부화를 줄이기 위해)


사용자가 무선이 연결된 상태로 유선을 연결하여 한 노트북에서 2개의 IP를 할당 받아 사용


-(IP부족현상 발생 및 2개의 회선이 연결됨으로 인한 인터넷 접속 오동작 발생 중)


사용자는 무선을 비활성화 시키고 유선을 사용해야 하는데 그러지 않음


-(교육을해도 실행안하네요..ㅜㅜ)


어쩔수 없이 유선 연결시 무선이 자동 비활성화 시키도록하는 방법을 찾는중..


2.정리


회의실에서 무선 연결해서 사용후 자리와서 유선 연결시


자동으로 무선연결이 차단되는 로직이 필요(무선연결영역이 자동비활성화 )


무선 연결은 사용자가 비활성화 된 무선연결영역을 활성화 해서 사용


- (가능하다면..유선을 빼면 무선이 자동 활성화 되면 금상첨화 입니다..^^)


또한 재 부팅 후 이 명령이 유지가 되게끔 하면 좋을 것 같습니다.. ^^



위에 대한 로직 또는 특정 프로그램 등이 있음 좋겠는데.. 쉽지가 않네요..


사내 사용자가 약 500여명이라 일일히 설명해 주는것도 지치는 중이라..


해결할 실력은 안되고 이렇게 도움을 요청드리고 있습니다..


감사하고 잘 부탁 드립니다..^^



wansoo
  0 추천 | 약 3년 전

유선 네트워크에 IP가 할당되었을때,

무선 네트워크에 할당된 IP를 제거하는 걸 batch file로 한번 만들어 볼까요..? ^^;;


그런데... 전체 작업을 완료하기에는 시간을 너무 많이 뺏겨야 할 것 같아서...

오늘은 유선으로 연결된 IP를 나열하는 것만 한번 만들어 볼께요.


구현을 위한 전체 알고리즘은...

  • 1.무한 루프로 작동 시키고,

          무한 루프 안에서...

   2. 유선 네트워크 인터페이스에 ip가 할당되어 있는지 확인해서

   3. 유선 네트워크 인터페이스에 ip가 할당되어 있다면,

  4. 무선 네트워크 인터페이스에 할당된 ip를 제거 시킨다.

  5. 몇초간 기다린 후에 루틴을 처음부터 다시 반복한다.


위에서 중요 작업이 2번, 3번, 4번이 되겠는데요.

오늘은 2번에 해당 하는 부분만 batch file로 한번 만들어 볼께요.


이 방법이 괜찮아 보인다면 답글 달아 주세요.

그럼, 다음에 다시 추가 내용을 연구해 볼께요.

별로 마음에 안든다면, 더 이상 추가 내용을 만들기 위해 시간을 뺐기고 싶지는 않고요~ ^^


아래 내용을 메모장에  붙여 넣기 하고, 확장자가 .bat인 file로 저장해서 실행해 보세요.

@echo off

setlocal enableDelayedExpansion

for /f "tokens=1-2 delims=:" %%a in ( 'ipconfig ^| findstr 이더넷' ) do (

  set eth=%%a

  set eth_name=!eth:~8,30!

  netsh -c int ip show addresses name="!eth_name!" | findstr IP

)




위의 script를 저장할 file 명을 eth_ip.bat 정도로 만들면 되지 않을까 싶고요.


메모장에서 file을 저장할때 주의 사항은 인코딩을 ANSI로 해야 한다는 겁니다.

내용중에 한글 문자가 들어 있기 때문에 UTF-8 등의 인코딩으로 저장할 경우에 batch file 실행중에 오류가 발생되게 되기 때문에 인코딩을 주의해서 저장해 줘야 합니다.

parksh2041 | 약 3년 전

이 방법이 괜찮아 보이네요

젠트
  0 추천 | 약 3년 전 | 와이컴 | 010-6398-3578

parksh2041 | 약 3년 전

위의 주소로 시도는 해보았으나 정상적으로 동작하지 않네요..^^

신경써주셔서 감사합니다 ^^

wansoo
  0 추천 | 약 3년 전

parksh2041 | 약 3년 전

감사합니다.. 요 방법은 제가 생각하는 방향과는 다르네요 ㅎㅎ

신경 써 주셔서 감사합니다..

deerokgo
  0 추천 | 약 3년 전

윈도우 자체 기능이라 안될거 같다는 생각입니다. 

parksh2041 | 약 3년 전

네.. 신경써 주셔서 감사합니다 ^^

wansoo
  0 추천 | 약 3년 전

자동 감지되어 뭘 어떻게 한다는 건...

백 그라운드 프로그램을 작동하게 해서 반복적으로 체크하게 만들거나, 이벤트 방식으로 특정 액션이 일어났을 때 해당 이벤트에 해당하는 프로그램이 구동되게 만들어야 한다는 의미가 되겠고요.

해당 기능은 배치 파일로도 만드는 건 어렵지 않은것 같아 보이네요.

컴퓨터가 시작될시나 스케쥴에 등록해서 자동 작동되게해서 수 초 또는 수분 간격으로 유선 네트워크 인터페이스에 ip가 할당되어 있는지 어떤지를 체크하게 만들어야 겠는데...

batch file로 만든다면 작업 표시줄에 cmd가 백그라운드로 작동되고 있다는 표시가 나오 가능성이 있어 보기에 좋지 않을수도 있고요.

프로그램 언어나 서비스 형태로 구동하는 게 성능면에서나 화면 보기에서나 좀 더 낫지 않을까 싶기도 하지만, 큰 차이는 없을거라는 생각도 들고요.


알고리즘은 간단할거 같네요.

무한 루프로 작동 시키고,

무한 루프 안에서...

유선 네트워크 인터페이스에 ip가 할당되어 활성화되어 있는지 여부를 체크해서,

유선 네트워크 인터페이스에 ip가 할당되어 있다면,

무선 네트워크 인터페이스를 비활성화 시키거나, 할당된 ip를 제거 시키게

처리하면 될 것 같네요.


그리고, 쉐어드 IT에 글을 올리고 난 후에 답글이 달리고 난 후에는 글을 삭제 하지 않는게 권장됩니다.

여러 회원님들께서 나름의 고민을 해서 답글을 적었는데, 문제를 해결했다고 글을 삭제해 버린다면...

허탈감을 느낄 회원님들이 많기 때문에~ㅎㅎㅎ

피치 못할 사정이 있는 글이 아니라면 가급적 적은 글을 그대로 두는게 좋을 것 같아 보이네요.

parksh2041 | 약 3년 전

네 .. 앞으로는 가급적 글은 남겨두는 방향으로 하겠습니다..