我刚发现我服务器上的其中一个插件存在安全漏洞,我想删除所有这些版本的插件。但是我最近开始学习如何通过以多租户方式安装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
目录存储在$var1
(rm -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
答案 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