Как запустить sudo gedit без отказа соединения?

Следующий скрипт будет

  1. проверить, действительно ли существуют новые точки монтирования (и прервать в противном случае ),
  2. сделать датированную резервную копию существующего /etc/fstabфайла и, наконец,
  3. изменить файл /etc/fstab.

Я бы рекомендовал запустить его на копии файла fstabнесколько раз, чтобы убедиться, что он работает в вашей системе. Просто измените переменную fstabв верхней части скрипта, чтобы она указывала на другой файл.

Только скрипт добавляет суффикс к точке монтирования. Он не пытается удалить его, если он там уже есть.

#!/bin/sh

set -e  # terminate on errors (don't remove!)

fstab='/etc/fstab'                    # these could be made command line arguments
device_pattern='^NAS[0-9]:/vol/wrm6'  # but I kept them like this for simplicity
dir_pattern='^/archive/'
suffix='_05042018'

# Check for non-existing mount points
awk -v suf="$suffix" -v dev="$device_pattern" -v dir="$dir_pattern" \
    '$1 ~ dev && $2 ~ dir { print NR, $1, $2 suf }' "$fstab" |
while read lineno device mtpoint; do
    if [ ! -d "$mtpoint" ]; then
        printf 'Mount point "%s" for "%s" is missing on line %d of %s\n' \
            "$mtpoint" "$device" "$lineno" "$fstab" >&2
        #exit 1
    fi
done

# Make backup
bkname="$fstab-backup.$(date +%F_%H%M%S)"
cp "$fstab" "$bkname"

# Modify file
awk -v suf="$suffix" -v dev="$device_pattern" -v dir="$dir_pattern" \
    '$1 ~ dev && $2 ~ dir { $2 = $2 suf } 1' "$bkname" >"$fstab"

echo 'Done.'
echo 'New fstab:'
cat "$fstab"

"Не удалять!" комментарий реальный. Если set -eудалить, то скрипт не завершится, если будет найдена недопустимая точка монтирования (, по крайней мере, при работе под bashилиpdksh).

0
05.05.2020, 04:43
3 ответа

Вместо того, чтобы открывать gedit из оболочки, я предлагаю вам использовать редактор терминала, например vi .

sudo vi /path/to/file
0
28.04.2021, 23:16

Скорее всего, вы используете Xwindows под своей учетной записью, но пытаетесь открыть сеанс gedit от имени пользователя root с помощью команды sudo. Попробуйте xhost local:, чтобы разрешить любому пользователю с локального хоста доступ к дисплею, затем повторите команду. Если это сработает, вы можете уточнить его, просто разрешив root доступ к дисплею с помощьюxhost +SI:localuser:root

1
28.04.2021, 23:16

Попробуйте добавить переключатель -Eпосле команды sudo:

sudo -E gedit /etc/ssh/sshd_config
1
21.06.2021, 11:30

Теги

Похожие вопросы