Решение состоит в том, чтобы полностью сбросить установку PSQL, чтобы она находилась в том же состоянии, в котором она была установлена. Debian отделяет конфигурацию базы данных от файлов базы данных, в отличие от общей установки PSQL, которая помещает все в один и тот же каталог. Debian позволяет нескольким кластерам и даже разным версиям PSQL сосуществовать на одном хосте.
Configuration files: /etc/postgresql/[version]/[cluster]/
Binaries: /usr/lib/postgresql/[version]
Data files: /var/lib/postgresql/[version]/[cluster]
Установка Debian PSQL автоматически вызывает initdb
, т. е. инициализирует кластер с кодировкой и локалью по умолчанию. Кодировку можно изменить позже, но локаль нельзя. Чтобы изменить локаль (, возможно, другие параметры в initdb ), удалите существующий кластер по умолчанию и создайте новый :
-Получите привилегии суперпользователя.
-Выполните следующую команду:
pg_dropcluster --stop <version> main
For example:
pg_dropcluster --stop 8.3 main
-Запустите initdb с вашими параметрами. Например:
pg_createcluster --locale de_DE.UTF-8 --start 8.3 main
Предположим, что две команды, выполненные на удаленном хосте, выдают по одной строке вывода каждая:
{ read mac_addr; read timing; } < <(
sshpass -pthe@Donut ssh -o StrictHostKeyChecking=no "pi@$Rasp_id" <<'SSH_END'
ip link show wlan0 | awk '/link/ { print $2 }'
date
SSH_END
)
Это считывает две строки, созданные удаленными командами, в две локальные переменные mac_addr
и timing
. Данные передаются двум вызовам read
посредством перенаправленной подстановки процесса.
Если вы предполагаете, что команда date
на удаленном хосте будет выводить то же самое, что и локально, то это можно упростить:
timing=$(date)
mac_addr=$(sshpass -pthe@Donut ssh -o StrictHostKeyChecking=no "pi@$Rasp_id" <<'SSH_END'
ip link show wlan0 | awk '/link/ { print $2 }'
SSH_END
)
Или просто
timing=$(date)
mac_addr=$(sshpass -pthe@Donut ssh -o StrictHostKeyChecking=no "pi@$Rasp_id" ip link show wlan0 | awk '/link/ { print $2 }' )
... выполнение команды awk
локально.
Небольшое примечание об остальной части вашего кода. :Не забудьте заключать в двойные кавычки любое расширение переменной и помните, что read
в bash
может дать пользователю подсказку, если вы используете-p
:
read -p 'Enter the raspberry IP address you want to connect: ' Rasp_id
Кроме того, Почему printf лучше, чем echo?