2017-02-16 7 views
0

저는 리눅스 서버에 많은 수의 단일 설치 WordPress 사이트를 보유하고 있습니다. 내 사이트 그룹에 대한 디렉토리 이름을 포함하는 텍스트 파일을 만들고 싶습니다.여러 디렉토리에서 명령 실행

는 예를 들어 내 모든 사이트는 /var/www/vhosts에 살고있는 나는 같은

site1 
site2 
site3 
site4 

어떻게 난 단지 디렉토리를 통해 루프가 지정하는 스크립트를 작성할 수 있습니다 그룹에 텍스트 파일에서 100 개 웹 사이트의 설정을 할 수 있습니다 그룹 텍스트 파일에 저장하고 명령을 실행하십시오. 내 목표는 WordPress 플러그인 중 일부를 심볼릭 링크하는 것입니다. 그룹을 만들고 해당 디렉토리 그룹 내에서 명령을 실행할 수 있다면 수동으로 디렉토리별로 디렉토리로 이동하지 않아도됩니다.

그룹 파일의 각 사이트에 대해 /wp-content/plugins 폴더로 이동하여 지정된 symlink 명령을 실행하십시오.

+0

입력 및 출력 예제를 제공 할 수 있습니까? – MosheZada

답변

0

목표에 따라 find-exec 동작을 사용하면 한 줄짜리로 그 목표를 달성 할 수 있습니다. 나는 Bash 루프로하고 싶다. 길고 다루기 힘든 명령을하는 대신에 추가 명령을 추가하는 것이 더 쉽고, 오류를 처리하는 것이 더 쉽기 때문이다.

내가 의도 한 바를 모르겠지만 여기에 제안이 있습니다.

#!/bin/bash 

# Receives site group file as argument1 
# Receives symlink name as argument 2 
# Further arguments will be passed to the command called 

sites_dir="/var/www/vhosts" 
commands_dir="wp-content/plugins"  

if ! [[ -f $1 ]] ; then 
    echo "Site list not found : $1" 
    exit 
fi 

while IFS= read -r site 
do 
    site_dir="$sites_dir/$site" 
    if ! [[ -d $site_dir ]] ; then 
    echo "Unknown site : $site" 
    continue 
    fi 
    command="$site_dir/$commands_dir/$2" 
    if ! [[ -x $command ]] ; then 
    echo "Missing or non-executable command : $command" 
    continue 
    fi 
    "$command" "${@:3}" 
done <"$1" 
+0

저는 bash 스크립팅에 조금 익숙해졌습니다. 그래서 제가 필요로하는 것을 조금 더 설명하게하고 스크립트가 그것을 수행하는지 저에게 말할 수 있습니다. 이 일에 협조 해 주셔서 감사합니다. 나는 prod.txt라는 그룹 텍스트 파일을 가지고 있고 또 하나는 testing.txt라고 할 수 있습니다. 각 텍스트 파일에는 site1 site2 등의 Wordpress 설치에 대한 최상위 디렉토리 이름이 있습니다. 지정된 텍스트 파일에만 포함 된 최상위 디렉토리를 반복합니다. – Cole

+0

각 WordPress에 wp-content/plugins 디렉토리를 입력하고 플러그인 "wp-rocket"또는 symlink 용 폴더가 이미 있는지 확인하기위한 명령을 실행하고 싶습니다. 둘 중 하나라도 있으면 폴더 또는 심볼릭 링크를 삭제하십시오. 마지막 명령은 새로운 심볼릭 링크를 만드는 것입니다 : 예제 명령 : 'ln -s/var/www/repositories/wp-rocket wp-rocket' – Cole