如何迭代文件夹中的所有文件并运行curl命令以安装AEM软件包

时间:2019-03-21 15:09:24

标签: shell unix curl aem windows-shell

我正在尝试创建一个shell脚本,该脚本可以迭代所有zip文件,并使用curl命令将它们安装在AEM软件包管理器中。 下面的单个curl命令正在运行,它正在相应的AEM实例中正确安装软件包。

curl -u admin:admin -F file=@"content-ope.zip" -F name="content-ope.zip" -F force=true -F install=true http://localhost:4502/crx/packmgr/service.jsp

但是我们必须安装许多zip文件,因此我们计划将所有zip文件保留在一个文件夹中,迭代所有zip文件并使用curl命令安装。尝试了while和for循环,但无法使用Shell脚本读取所有.zip文件。

有人对此有任何想法吗?

3 个答案:

答案 0 :(得分:2)

我写的是确切的东西,请看这里:

https://gist.github.com/ahmed-musallam/07fbf430168d4ac57bd8c89d8be9bca5

#!/bin/bash
# this script will install ALL zip packages in current directory the AEM instance at 4502
for f in *.zip
do
    echo "installing: $f"
    curl -u admin:admin -F file=@"$f" -F name="$f" -F force=true -F install=true http://localhost:4502/crx/packmgr/service.jsp
    echo "done."

done

答案 1 :(得分:1)

除了使用curl之外,您还可以将文件复制到AEM实例的安装文件夹中。这些将自动安装。 https://helpx.adobe.com/in/experience-manager/6-3/sites/administering/using/package-manager.html#FileSystemBasedUploadandInstallation

答案 2 :(得分:0)

find . -name "*.zip" -maxdepth 1 -exec curl -u admin:admin -F file=@"{}" -F name="{}" -F force=true -F install=true http://localhost:4502/crx/packmgr/service.jsp ";"

节点,它将用./foo.zip代替foo.zip。如果您需要剥离./,则可能应该编写将curl接受命令的外壳脚本包裹起来,该命令接受zip文件名作为参数,并在传递给./之前从中剥离curl