首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命令在终端中工作,而不是在Bash脚本中工作

命令在终端中工作,而不是在Bash脚本中工作
EN

Stack Overflow用户
提问于 2018-07-15 06:58:06
回答 1查看 266关注 0票数 2

我是部署在cpanel托管面板中的几个for服务器的sysadmin。我正试着用一个备用脚本来完成。有两个与Cpanel捆绑在一起的命令,将在这个脚本中使用。这些命令是;

代码语言:javascript
复制
1. whmapi1 modifyacct user=USERNAME BACKUP=[01]

此命令需要设置布尔值,它所做的是为特定用户启用或禁用备份。

代码语言:javascript
复制
2. /usr/local/cpanel/bin/backup --force

为用户/用户启用备份后,此命令将在服务器上启动备份进程。

这是我的脚本逻辑&脚本。

代码语言:javascript
复制
#!/bin/bash

列阵

代码语言:javascript
复制
L=($( comm -23 <(du -h --max-depth=1 /home 2>/dev/null | grep G |  awk -F"/" '{print $NF}' | sort | egrep -vw '(home|virtfs)') <(ls -al /var/cpanel/suspended/ | grep -v 'lock' | sort) ))

上面的Array包含主目录已超过1GB限制的所有帐户。

代码语言:javascript
复制
S=($(comm -23 <(du -h --max-depth=1 /home 2>/dev/null | egrep -v '(!G|.cp|cP|clamav)' | awk -F"/" '{print $NF}' | sort | egrep -vw '(home|virtfs)') <(ls -al /var/cpanel/suspended/ | grep -v 'lock' | sort) ))

上面的Array包含主目录小于1GB限制的所有帐户。

代码语言:javascript
复制
whmapi1 modifyacct user=${L[@]} BACKUP=0 && whmapi1 modifyacct user=${S[@]} BACKUP=0

上述命令禁用所有用户的备份,以便从scracth开始。

代码语言:javascript
复制
whmapi1 modifyacct user=${S[@]} BACKUP=1

T

他的命令为所有主目录小于1gb的帐户启用备份。

代码语言:javascript
复制
/usr/local/cpanel/bin/backup --force

此命令启动所有启用用户的备份过程。

逻辑是,我想先创建小型帐户的备份,然后当它完成后,我将为更大的帐户运行它。

PROBLEM:所有命令在终端中直接运行时都会成功执行,但通过脚本运行时不会执行。在account启用和禁用时出现问题。按照脚本的逻辑,它要么禁用所有,要么启用所有,而不是部分帐户。

谁能指出,我错过了什么?提前谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-15 07:58:24

${l[@]}扩展到user1 user2 user3 ...,所以user=${L[@]}扩展到了user=user1 user2 user3 ...,如果您想让用户感兴趣,您需要遍历用户。

代码语言:javascript
复制
du_buff=$(du -h --max-depth=1 /home 2>/dev/null)
lock_buff=$(ls -al /var/cpanel/suspended/ | grep -v 'lock' | sort)
L=($(comm -23 <(echo "$du_buff" | grep G |  awk -F"/" '{print $NF}' | sort | egrep -vw '(home|virtfs)') <(echo "$lock_buff") ))
S=($(comm -23 <(echo "$du_buff" | egrep -v '(!G|.cp|cP|clamav)' | awk -F"/" '{print $NF}' | sort | egrep -vw '(home|virtfs)') <(echo "$lock_buff") ))

# for every user in L and S
for user in "${L[@]}" "${S[@]}"; do
     whmapi1 modifyacct user=$user BACKUP=0
done
# for every user in S
for user in "${S[@]}"; do
     whmapi1 modifyacct user=$user BACKUP=1
done
/usr/local/cpanel/bin/backup --force
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51346029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档