为什么不能在shell脚本中使用'sudo su'?如何使shell脚本自动运行sudo

wz1wpwve  于 2022-12-13  发布在  Shell
关注(0)|答案(1)|浏览(350)

我不知道我的bash脚本出了什么问题。当我在终端中运行它时,一个命令一个命令地在终端中单独运行每个命令,它工作了。

#!/bin/bash    
sudo su <<EOF
mkdir /home/ubuntu/backup/
cp "$(ls -t /usr/lib/unifi/data/backup/autobackup | head -1)" /home/ubuntu/backup/
curl --insecure --user root:password -T "$(ls -t /home/ubuntu/backup/ | head -1)" sftp://vps2.duckdns.org:/root/backup.unf
EOF

但是,当我运行上面的bash脚本时,请给予大量的错误

bash -v test.sh
#!/bin/bash
sudo su <<EOF
mkdir /home/ubuntu/backup/
cp "$(ls -t /usr/lib/unifi/data/backup/autobackup | head -1)" /home/ubuntu/backup/
curl --insecure --user root:password -T "$(ls -t /home/ubuntu/backup/ | head -1)" sftp://vps2.duckdns.org:/root/backup.unf
EOF
ls: cannot access '/usr/lib/unifi/data/backup/autobackup': Permission denied
ls: cannot access '/home/ubuntu/backup/': No such file or directory
cp: cannot stat '': No such file or directory
curl: (78) Could not open remote file for reading: SFTP server: No such file

任何帮助都将不胜感激!
短暂性脑缺血

5tmbdcev

5tmbdcev1#

它试图在原始shell中执行命令替换,该shell以普通用户的权限运行。它们需要由su执行。引用EOF标记以防止在here-document中进行扩展。

sudo su <<'EOF'

相关问题