셸 호스트 이름 일괄 변경

1844 단어
때때로 우 리 는 호스트 이름 을 대량으로 수정 하고 hosts 파일 을 여러 대의 호스트 에 동기 화 하 는 수요 가 있 습 니 다. 예 를 들 어 클 라 우 드 서버 를 새로 구입 하 는 등 호스트 이름 이 당신 의 이름 규칙 이나 규범 을 만족 시 키 지 못 할 수도 있 습 니 다. 그러나 한 대 에서 변경 하면 너무 느 리 고 지루 할 수도 있 습 니 다. 그래서 셸 스 크 립 트 는 당신 의 최선 의 선택 입 니 다.수요 분석: 1. ssh 공개 키 복사, 암호 없 는 관 리 를 제공 합 니 다.2. hosts 파일 을 여러 호스트 에 대량으로 동기 화 합 니 다.3. 호스트 이름 을 대량으로 수정 합 니 다.구현: 우선 여러 호스트 에 동기 화 할 hosts 파일 을 편집 합 니 다.
vi /etc/hosts

192.168.0.1 server1
192.168.0.2 server2
192.168.0.3 server3
192.168.0.4 server4
192.168.0.5 server5
192.168.0.6 server6
192.168.0.7 server7
192.168.0.8 server8
192.168.0.9 server9
192.168.0.10 server10

그리고 셸 스 크 립 트 편집:
vi changename.sh

#!/bin/bash
# This is a shell script to change hostname
# version 0.1
# Created in 2015.8.11
# Creator Edison

export PATH=$PATH
export USER=root
export SNAMEPRE=server
export PASSWD=test01   #定义密码
for i in {1..10};
 do /usr/bin/expect << EOF     ##这里用到了expect完成了确认yes和密码输入交互
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $USER@$SNAMEPRE$i
expect {
"(yes/no)?" {send "yes\r";exp_continue}
"password:" {send "$PASSWD\r"}
}
interact
expect eof
EOF
    ssh $USER@$SNAMEPRE$i "sed -i s/^HOST.*/HOSTNAME=$SNAMEPRE$i/ /etc/sysconfig/network";
    scp /etc/hosts $USER@$SNAMEPRE$i:/etc/hosts;
 done;

expect 를 사용 하여 자동 대화 확인 과 비밀번호 입력 을 완성 합 니 다.expect 는 사람의 간섭 없 이 자동 과 상호작용 임 무 를 실현 하 는 무료 프로 그래 밍 도구 언어 입 니 다.Expect 의 저자 Don Libes 는 1990 년 Expect 를 작성 하기 시 작 했 을 때 Expect 에 대해 다음 과 같은 정 의 를 내 렸 다. Expect 는 자동 상호작용 기능 을 실현 하 는 소프트웨어 세트 (Expect [is a] software suite for automating inteactive tools) 이다.시스템 관리자 의 스 크 립 트 를 사용 하면 명령 이나 프로그램 에 대한 입력 을 실현 할 수 있 습 니 다. 이 명령 과 프로그램 은 터미널 (terminal) 에서 입력 을 받 기 를 원 합 니 다. 일반적으로 이 입력 은 수 동 으로 입력 해 야 합 니 다.더 많은 정 보 는 사이트 를 보십시오http://expect.sourceforge.net/

좋은 웹페이지 즐겨찾기