您好,自动化执行一些任务,将用户从本地更改为 sudo su root 并连接到 ftp 服务器,将 .gz 文件从 ftp 获取到本地计算机,gunzip 该文件并恢复到 PostgreSQL BD,但我无法更改用户
我在脚本中使用的一些示例脚本
1.spawn sudo -s <
期望“用户名密码:”
发送——“生产123\r”
期望 eof
错误:-
-bash: ./dbbackup.sh: /usr/bin: 错误的解释器: 权限被拒绝
- sudo -kSs << EOF
产量123
我是谁
echo“以纯文本编码的密码不是一个好主意”
EOF
错误:它也没有切换用户
3.sudo -s <
期望“用户名密码:”
发送——“生产123\r”
期望 eof
错误
[生产@nsuat crons]$ ./dbbackup.sh ./dbbackup.sh:第 1 行:EOF:没有这样的文件或目录 ./dbbackup.sh:第 3 行:期望:找不到命令 ./dbbackup.sh:第 5 行: 发送: 未找到命令 ./dbbackup.sh: 第 7 行: 期望: 未找到命令 [生产@nsuat crons]$
答案1
问题有点难以理解。但是,如果可以的话,我可以提供另一种方法。创建运行备份的特定用户,并为其授予无密码 sudo 权限。现在设置 cron 作业(或您使用的其他东西)以该用户身份运行,并让备份脚本在需要时提升 (sudo) 其权限。
或者,根据 Postgres 的设置方式,您可以让 postgres 用户作为运行恢复的用户。
答案2
尝试这个;这个对我有用:
echo "[Password]" | su [UserName] -c [Command/Script to be executed]