2013-01-23 2 views
1

SSH에 필요한 일련의 장치가 있으며 장치 이름을 변경하는 일부 파일을 수정하고 네트워크 설정이 있습니다. 나는 각각의 파일을 수정 나노를 사용하여 다음 시스템에 ssh를 퍼티를 사용하고 있어요파일에서 데이터를 수정하기위한 리눅스 명령 스크립팅

NETWORK_ETH1_CLIENTIP_LIST='10.47.19.182' 

HOSTNAME="c50" 

:

파일과 같은 데이터가 포함되어 있습니다.

필자는 스크립트가 쉬울 것이라고 생각하지만 내가하고 싶은 리눅스 명령에 대해서는 확신하지 못했습니다.

지정된 텍스트 파일 내에서 문자열을 검색 할 수있는 Linux의 명령이 있습니까? "호스트 이름"을 찾고 찾은 행을 새로운 호스트 이름으로 바꿉니 까?

은 내가 배치 파일에서 호출 쉽게 시스템 검사 중 일부 가용 스루풋을 사용하여 현재 오전 :

plink.exe -pw PASSWORD [email protected] -m Commands/SystemChecks.txt 

사용자 이름과 암호가 생략되었다. SystemChecks는 장치가 성공적으로 수정되었는지 테스트하기 위해 몇 가지 기본 조회 테이블과 ping 명령 등을 포함합니다.

내가 도움이 필요한 것은 linux 명령을 사용하여 데이터 (호스트 이름, IP 주소, 넷 마스크 등)를 찾아 교체하는 방법을 찾는 것입니다.

답변

1

sed를 사용하면 선을 날려 버리고 에코로 내용을 다시 쓸 수 있습니다. 아마도 값을 대체하는 더 우아한 방법 일 것입니다.

target='/path/to/target_file' 
sed -i "/HOSTNAME/d" $target 
echo "HOSTNAME=\"newhostname\"" >> $target 
+0

sed에게 시도해 주겠다, 감사합니다 :) – cheeseman

1
echo 'HOSTNAME="c50"' | sed 's/HOSTNAME="c50"/HOSTNAME="c60"/g' 

sed 명령을 사용하면 쉽게 대체 할 수 있습니다. 당신이, 당신이 방법을 다음에 사용 sed을 할 수 HOSTNAME="c50"HOSTNAME="d10000"에 값을 변경하려는 경우,

NETWORK_ETH1_CLIENTIP_LIST='10.47.19.182' 
HOSTNAME="c50" 

를 따라서 :

는 파일이 file.conf이라고하고 다음과 같이 해당 파일의 내용을 다음 있습니다 있다고 가정 :

sed -i 's/HOSTNAME="c50"/HOSTNAME="d10000"/g' file.conf 
+0

이전 장치 이름/ip 주소 등을 모른 채이를 수행 할 수있는 방법이 있습니까? – cheeseman