Доступ к содержимому файла с помощью сценария оболочки

Создайте (или используйте существующий )общий раздел, который могут монтировать оба дистрибутива.

Проверьте с помощью fdiskили gparted, если /homeуже является разделом сам по себе, в этом случае вы можете смонтировать раздел другой ОС из/etc/fstab

В идеале, если у вас одинаковыйUID(идентификатор пользователя )иGID(идентификатор группы ), вы сможете поддерживать владение файлами между ОС.

Если вам нужно создать новый раздел, вам может потребоваться изменить размер одного или нескольких существующих разделов, чтобы освободить место для нового раздела. Gpartedумеет это делать.

0
24.06.2019, 23:05
4 ответа

Я бы использовал cat для вывода файла, grep для выбора машины и awk для фильтрации полей (в вашем случае пароль и так далее ).

Вот так

login=$(cat $myfile | grep $mymachine | awk '{print $4}')
-1
28.01.2020, 05:06

Я бы сделал это:

login=$(grep $mymachin "$myfile" | cut -d' ' -f3)
password=$(grep $mymachin "$myfile" | cut -d' ' -f5)

или даже лучше

# reading the file only once
login_password=$(grep $mymachin "$myfile" | cut -d' ' -f3,5)
login=$(cut -d' ' -f1 <<<$login_password)
password=$(cut -d' ' -f2 <<<$login_password)

Альтернативный метод, теперь я правильно прочитал пример, используя ключевые слова вместо позиции:

line=$(grep $mymachin "$myfile")
login=$(sed 's/.*login \(.*\).*/\1/' <<<$line)
password=$(sed 's/.*password \(.*\).*/\1/' <<<$line)
0
28.01.2020, 05:06
get_netrc_user () {
    awk -v machine="$1" '$2 == machine { print $4 }' netrc
}

get_netrc_user () {
    awk -v machine="$1" '$2 == machine { print $6 }' netrc
}

Первая функция извлекает имя пользователя/логин для конкретной машины, а вторая извлекает пароль.

Для использования:

username=$( get_netrc_user 'ftp.test.net' )
password=$( get_netrc_pass 'ftp.test.net' )

get_netrc_passпредполагает, что пароль никогда не содержит пробелов. Если это так, мы можем изменить его, чтобы сделать его более безопасным :

.
get_netrc_user () {
    awk -v machine="$1" '$2 == machine { sub(".*password ", "", $0); print }' netrc
}

Теперь вместо того, чтобы возвращать из файла 6-е поле, разделенное пробелом -, мы удаляем все до строкиpassword(с пробелом в конце )и возвращаем то, что осталось от строки. Это все равно не удастся, если пароль явно содержит эту строку.

0
28.01.2020, 05:06

Выполнено с приведенными ниже командами для получения имени пользователя и пароля

username=`awk '/Machinename/{print $4}' filename`
pass=`awk '/Machinename/{print $6}' filename`
-1
28.01.2020, 05:06

Теги

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