SharedIT | 묻고 답하기(AMP)

게시물이 2020-05-15 13:40:18에 삭제 되었습니다.

이 게시물은 나나니니님이 2020-05-15 13:40:18에 삭제 처리 하었습니다.

4개의 답변이 있습니다.

차바라기
  0 추천 | 4년 이하 전

커널 업그레이드는 shell로 가능합니다. 그런데 많은 서버를 한다면 

여기사이트도 참고 하시면 될듯합니다.

https://imitator.kr/index.php?mid=Linux&document_srl=3076&l=en&m=0

나나니니 | 4년 이하 전

앗 좋은 내용이 담겨있네요! 정보 감사합니다 :)

wansoo
  0 추천 | 4년 이하 전

expect shell 설치는 


ubuntu 계열에서  apt install expect로 설치하면 되겠고~


centos 계열에서는 yum install expect로 설치하면 되겠고요~




expect shell을 이용해서 CentOS 한대에다 로긴한후에,

yum을 실행시키는 단계까지만 샘플로 스크립트를 만들어 볼께요.


이걸 조금 보완하고,

배열에 서버주소, id, password를 지정하고해서

반복 처리하는 형태로 한다면 복잡하게 만들지 않고도 구현 가능하리라 생각됩니다.


시간만 좀 더 있다면 좀 더 완성도 높은 스크립트를 만들어 드리고 싶지만...

지금 시간이 그렇게 많지 않다 보니... ^^;;



===============


#!/usr/bin/expect

spawn telnet 서버IP주소

expect -re "login:"

sleep 1

send "계정id\r"

expect -re "Password:"

sleep 1

send "암호\r"

send "/bin/su -\r"

expect -re "Passwword:"

sleep 1

send "root암호\r"

send "/usr/bin/yum update -y && /usr/bin/yum upgrade -y \r"

interact



===============


위 스크립트는

telnet 로긴 시도해서

login:

나올때까지 1초 기다렸다가, 

계정id를 입력한후 Enter (\r) 를 입력하고,

다시 Password: 가 나올때까지 기다렸다가, 계정의 암호를 입력한후 Enter (\r) 키를 입력하고,

su 명령으로 루트 계정으로 변경하고 ( Password: 가 나오면 root 암호 입력 )

패치 시키는 명령을 전달해서 실행시키고~


interact 명령으로 사용자 명령을 대기 하는 상태까지만 적어보았습니다.



구체적인 명령들, 사용법 등등은 인터넷 자료 찾아보면서 참고해서 만든다면 많은 지식없이도 가능하리라 생각됩니다~

나나니니 | 4년 이하 전

아이고 상세한 답변 감사합니다.

Multiple Server에 접속할 수 있는 방법과 Kernel Update 명령 내리는 부분을 합쳐서 스크립트를 생각해봐야겠군요! 감사합니다!

Genghis Khan
  0 추천 | 4년 이하 전
ManageEngine Desktop Central 패치관리 시스템이 있네요 그런데 리눅스가 처음 설치 되었을때 동일하게 설치되었으면 상관 없지만 리눅스의 특성상 의존성을 체크하기 때문에 서버별로 설치된 pkg가 다르면 문제가 될수 있습니다.

나나니니 | 4년 이하 전

네 확인을 해보니 서버별 Role이 달라 설치 된 Pkg가 다르다고 하는군요.

저런 패치관리 시스템이 있는 것도 처음 알았네요 ㅎㅎ 리눅스를 좀 더 공부해야 겠습니다.

답변 감사합니다! 

wansoo
  0 추천 | 4년 이하 전

ssh 서버가 구축되어 있다면 원격으로 접속해서 설치해서 하는 스크립트를 만들어서  돌리면 되지 않을까 싶은데...

아니라면...

 expect shell을 이용해서 스크립트를 만들어서 돌리는 방법도 생각해 볼 수 있을 것 같아 보이고요.


정~ 안된다면 하나 하나 telnet 접속해서 업데이트 시켜야 하지 않을까요..? ^^


키를 조금이라도 적게 입력하려면 

apt update -y && apt upgrade -y && reboot 

또는

yum update -y && yum upgrade -y &&& reboot

와 같이 -y 옵션을 붙여서 실행시키는게 편할거라 생각되고요~

나나니니 | 4년 이하 전

expect shell로 Manage Server에서 원격지 Server(수천~수만)에 일괄적으로 Script을 실행하는 게 가능한가요? 리눅스를 운영해보지 않아서 해당 기능을 잘 모르겠네요 ㅠㅠ

답변 감사합니!!

wansoo | 4년 이하 전

수천, 수만개의 서버에 대한 패치할 수 있는 권한은 최소한 있어야 할테죠~

권한이라면 패치할 수 있는 계정에 대한 id, password가 될 테고요.

그리고, 서버에 대한 ip 정보도 당연히 있어야 원격 접속이 가능할 테고요~

expect shell을 이용하면 스크립트를 통해 id, password를 자동 입력 시켜 로긴 시키고, login 한 후에 명령을 실행 시킨 후에, 다시 빠져 나올 수 있습니다.


스크립트에 업그레이드해야할 서버들의  ip, id, password들을 배열 형식으로 쫙~ 나열해 주고요.

로긴 한 후에, 패치 시키는 과정은 거의 같은 과정으로 처리 되기 때문에 배열로 설정해둔 서버 댓수 만큼 반복하면서 패치 과정을 수행하면 될거 같아 보이네요.

패치 명령도 접속한 OS 버전을 uname 명령을 이용해서 CentOS 계열인지, 우분투 계열인지 자동 체크해서 yum이나 apt를 선택적으로 실행하도록 만들어도 될 것 같고요~

서버 정보를 나열하는 배열 지정하는 내용이 길어져서 그렇지...

실제 수행할 내용은 간단하게 구현할 수 있을 것 같네요~