Вот как работает sed
. При использовании с -i
(редактирование на месте) sed
создает временный файл с новым содержимым обработанного файла. По завершении sed
заменяет текущий рабочий файл временным.Утилита не редактирует файл на месте . Именно так поступает каждый редактор.
Это похоже на выполнение следующей задачи в оболочке:
sed 'whatever' file >tmp_file
mv tmp_file file
В этот момент sed
пытается сбросить буферизованные данные в файл, упомянутый в сообщении об ошибке, с помощью fflush ()
системный вызов:
Для выходных потоков
fflush ()
принудительно выполняет запись всех буферизованных данных в пользовательском пространстве для данного выходного потока или обновления потока через {{1 }} базовая функция записи.
Для вашей проблемы я вижу решение в установке отдельной файловой системы (например, tmpfs
, если у вас достаточно памяти, или внешнего запоминающего устройства) и переместите туда некоторые файлы, обработайте их там, и переместите их обратно.
Обычно программное обеспечение VPN не позволяет пользователю вводить пароль, поскольку это считается угрозой безопасности.
Возможным решением является передача пароля через канал, как в:
echo -e "Tunnel all\nYourPassword" | openconnect --authenticate --user=<username> "VPN host"
Если мы говорим о том, что вам интересен этот способ написать скрипт:
openconnect
. PS Замените YourPassword своим реальным паролем
Мне это подходит:
echo 'your password' > passwd.auth
sudo openconnect <SERVER IP> --user=USERNAME --servercert sha256:<SHA256> --passwd-on-stdin < passwd.auth