将bash脚本写入rm目录并替换为符号链接目录

时间:2014-06-04 20:49:52

标签: bash

我刚发现我服务器上的其中一个插件存在安全漏洞,我想删除所有这些版本的插件。但是我最近开始学习如何通过以多租户方式安装WordPress来运行每个插件和WordPress本身的单个主副本。

通过一些谷歌搜索,我能够找到正确的命令来搜索我的服务器所有出现的插件名称。所以我运行了find / -type d -name' plugin_name'现在有一个目录列表,看起来像/ home / rental / public_html / wp-content / plugins / plugin_name

我尝试创建一个bash脚本,该脚本将遍历文本文件的每一行,然后删除当前存在的目录,然后创建一个符号链接到其他位置的新目录。

我的文件如下:

/home/rentals/public_html/wp-content/plugins/all-in-one-seo-pack    
/home/beachcon/public_html/wp-content/plugins/all-in-one-seo-pack    
/home/sellingo/public_html/wp-content/plugins/all-in-one-seo-pack

我的伪代码看起来像这样。

  • 初始化我们的变量,包括符号链接目录 $symlink_directory = /opt/wordpress/plugins/all-in-one-seo
    $sym_plugin_directory = /all-in-one-seo
  • myfile.csv
  • 中的目录列表中抓取行
  • 将其丢入变量,我们称之为$var1
  • rm目录存储在$var1rm -rf $var1
  • 使用...(ln -s $var1 $symlink_directory
  • 为我们的目录创建符号链接

事实是,我只知道一些基本的PHP,而我在这里一起能够与弗兰肯斯坦一起做的事情还远远不够。有人可以帮忙吗?

#!/bin/bash

cat myfile.csv | while read line
do
    rm -rf "$var1" && ln -s "$var1" "$symlink_directory"
done

1 个答案:

答案 0 :(得分:1)

我认为这个脚本可以满足您的需求。我对包含要删除的文件夹的目录感到有点困惑,但希望脚本不言自明:

#!/bin/bash

# directory containing plugins to be removed
plugin_dir="/opt/wordpress/plugins/"

while read line
do
    # slice final part of directory name from line in file
    # (remove everything up to the final /)
    plugin_name=${line##*/}
    # full path to directory which will be removed
    dir="$plugin_dir/$plugin_name"
    # remove directory and create symbolic link to path from file
    rm -rf "$dir" && ln -s "$line" "$dir"
done < myfile

更新

根据您对代码的编辑,我认为这比我最初想的要简单得多:

#!/bin/bash

# directory containing plugins to be removed
plugin_dir="/opt/wordpress/plugins/all-in-one-seo"

while read dir
do
    # remove directory and create symbolic link to path from file
    rm -rf "$dir" && ln -s "$plugin_dir" "$dir"
done < myfile