如何通过 ssh 将一行附加到 /etc/fstab

如何通过 ssh 将一行附加到 /etc/fstab

我编写了一个硬盘自动挂载程序。

该软件使用 ssh 向目标机器发出请求。其理念是将新安装的硬盘自动添加到 fstab 中。

我已经使所有工作正常,fstab 行条目已准备好附加到文件中。

我正在尝试在我的软件中添加如下内容:

command.RunCommandSudo($"echo \"{mountstring}\" >> /etc/fstab");

产生以下格式的 ssh 查询:

sudo echo "UUID=X /mnt/test ext4 defaults 0 1" >> /etc/fstab 

=> 权限被拒绝

什么方法比较合适?我怀疑自动化软件是否应该使用文本编辑器(例如 nano)?

答案1

另一种方法是使用tee命令。

NAME
       tee - read from standard input and write to standard output and files

SYNOPSIS
       tee [OPTION]... [FILE]...

DESCRIPTION
       Copy standard input to each FILE, and also to standard output.

       -a, --append
              append to the given FILEs, do not overwrite

因此,对于您的命令,您可以这样做:

echo "UUID=X /mnt/test ext4 defaults 0 1" | sudo tee -a /etc/fstab

答案2

像这样

sudo su -c "echo 'UUID=X /mnt/test ext4 defaults 0 1' >> /etc/fstab"

请注意,这样的脚本应该由 root 用户使用,而不是管理员,因此这会导致 sudo 无法使用。

我更喜欢这样做:

grep -q '/mnt/test' /etc/fstab || 
printf 'UUID=X /mnt/test ext4 defaults 0 1\n' >> /etc/fstab

使用 root 用户来执行此操作。

相关内容