bash 쉘 스크립트를 사용하여 공유 호스트 설정을 자동화할 수 있습니까?

bash 쉘 스크립트를 사용하여 공유 호스트 설정을 자동화할 수 있습니까?

전문: 이전에 쉘 bash 스크립트를 만든 적이 없습니다. 그래서 우선, 이것이 작업에 적합한 도구인지조차 확신할 수 없습니다. 그렇지 않다면 무엇보다도 귀하의 의견으로는 최선의 대안이 무엇인지 알려주십시오.

문맥: 나는 웹사이트를 구축하려고 할 때마다 반복적인 작업을 수행하는 경우가 많습니다. 하나 또는 두 개의 명령을 실행하여 이러한 작업을 자동화하고 싶습니다. 업데이트: 공유 호스트는 Unix 기반입니다. 로컬 컴퓨터는 Mac OS X이므로 Unix 기반이기도 합니다.

예를 들어, 제가 자주 수행하는 작업(명령)은 다음과 같습니다.

SCP:

scp ~/local/path/general_web_app/.bash_profile [email protected]:/home/HOSTNAME/.bash_profile

scp ~/local/path/general_web_app/.gitconfig [email protected]:/home/HOSTNAME/.gitconfig

SSH를 통해 직접:

ssh [email protected] 
cd /www/www/
git init
git add .
git commit -a -m "first commit"
cd ~/private/ && mkdir repos

편집, 찾기, 바꾸기 저장 및 종료:

pico ~/remote/private/repos/general_hub.git/hooks/post-update
replace "user" WITH "hostname";
hit "cmd x"
hit "y"

AFAIK: 그게 제가 스크립트에서 수행하길 원하는 다양한 종류의 작업입니다.

질문 1: Bash 스크립트가 SCP, SSH를 직접 처리하고 EDIT FIND REPLACE SAVE AND EXIT를 처리할 수 있습니까?

질문 2: 일부 매개변수는 스크립트를 실행하는 사용자에게 요청되어야 하며 해당 매개변수는 일부 파일 내에 배치되어야 합니다(존재하는 특정 키워드를 대체). 이것이 가능합니까?

질문 3: 파일을 원격 장치에 복사하고 원격 장치에서 직접 편집해야 합니까, 아니면 로컬에서 파일을 가져와 "임시 위치에서 로컬로 편집"한 다음 서버에 배치해야 합니까? 나는 두 번째가 훨씬 더 복잡하다고 생각합니다.

제가 볼 수 있는 예가 있나요?

많은 감사드립니다

답변1

짧은 대답은 다음과 같습니다. 모두 그렇습니다.

몇 가지 예를 들어보겠습니다. 다음은 로컬 bash 스크립트를 원격 시스템에 실행하는 명령의 예입니다. 원격으로 복사할 필요는 없습니다.

   ssh user@remote_pc 'bash -s' < local_file.sh

이는 너무 간단해서 이를 처리하기 위해 전체 스크립트를 작성할 가치가 없을 수도 있지만, 그렇게 하고 싶다면 스크립트를 통해 정리할 수도 있습니다. 하지만 이것이 작동하려면 passwordless loginSSH 연결을 설정해야 합니다 . 그렇지 않으면 원격 사용자의 비밀번호를 입력할 때까지 기다리는 동안 스크립트 내의 ssh/scp 명령이 중지됩니다.

편집 등의 경우 Unix에는 sed정확히 다음과 같은 작업을 수행하는 최고의 스트림 편집기가 있습니다.

 sed 's/a/A/g' old_file.txt > new_file.txt

소문자를 a대문자로 대체하고 A출력을 새 파일에 배치합니다. 이것도 쉽게 스크립트로 작성할 수 있습니다.

매개변수의 경우 쉘 스크립트는 파일에서 매개변수를 읽거나 일부 매개변수에 대해 환경을 쿼리할 수 있습니다. 사용자에게 로그인 이름을 물어볼 필요가 없습니다.

  echo $USER
  whoami

스크립트 내에서도 그렇게 할 것입니다. 집 주소 echo $HOME등에 대해서도 마찬가지입니다 .

세 번째 질문에 대해서는 제 첫 번째 답변이 그에 대한 답변이 되기를 바랍니다. 첫 번째 명령을 사용하면 원격 서버에 복사할 필요 없이 로컬에서 편집한 스크립트 파일을 원격 서버에서 실행할 수 있습니다.

*Nix의 세계에 오신 것을 환영합니다.분부 받들겠습니다.

죄송합니다. 잊어버렸습니다. 이 명령은

  export -p | more

어디에서나 사용할 수 있는 모든 지역 변수를 표시합니다(기술적으로는 수출됨).

관련 정보