当用户改变时脚本停止

当用户改变时脚本停止

我正在尝试创建一个以不同用户身份登录的脚本来创建数据库备份。到目前为止,我遇到了一些问题,例如必须输入sudo密码,或者无法绕过 PostgreSQL 数据库凭据的密码提示。

我的脚本执行以下操作:

#!/bin/bash
sudo su - postgres
cd /opt/app/backup
pg_dump --username=admin dbName > file.gz

当我运行此脚本时,它会postgres按预期将我的本地用户更改为用户,但直到我输入时它才会执行其他行logout。提示卡在:

-bash-4.1$

任何帮助都将不胜感激。我正在使用 RedHat。

答案1

只是一个前言,但你为什么要运行这个脚本,sudo甚至切换用户?我猜你想让它在后台运行,对吧?那为什么不直接为用户设置一个 cron 作业呢postgres?或者你为什么要切换到用户postgres?为什么不以普通用户的身份运行备份?postgres你知道,实际 Linux 系统上的用户和数据库凭据是两码事。

话虽如此,回到你的具体问题:

当我运行此脚本时,它会postgres 按预期将我的本地用户更改为用户……

你确定这是真的吗?whoami其实postgres?我这么说是因为我不太清楚这句话:

sudo su - postgres

sudo su -会将用户切换到 root,然后是postgres后面的那个…不确定 shell 会如何处理?在我看来,应该只是这样:

sudo su postgres

此外,“Barmar” 在 Stack Overflow 上提供的答案,好像使用“此处有文件”—又名“此处文档”—可能是向该用户发送 pip 命令的另一种策略。了解这一点后,下面是可能有效的脚本重写版本:

#!/bin/bash
sudo su postgres <<'EOF'
cd /opt/app/backup
pg_dump --username=admin dbName > file.gz
EOF

相关内容