Когда я видел этот вид поведения, это обычно - что-то связанная сеть.
Вы не упоминали, соединялись ли Вы от работы или домой. Если бы Вы соединяетесь из дома, я перезагрузил бы персональный маршрутизатор, соединяющийся с Интернетом. Если бы Вы соединяетесь от работы, я согласовал бы с сетевой группой и узнал бы, изменилось ли что-то. Новый IPS/IDS? Новые определения или пороги для IPS/IDS? Новая политика брандмауэра? Новое значение тайм-аута?
Я чувствую, что можно хотеть начать смотреть за пределами SSH.
Я не думаю, что OpenOffice может быть убежден читать из своего стандартного входа. Но это не имеет значения. Просто запишите данные во временный файл.
Вы не хотите, чтобы пароли были записаны в диск. Это прекрасно. Запишите им в файл, который не хранится на диске.
Много систем используют файловую систему в оперативной памяти (tmpfs) для /tmp
. Солярис делал это целую вечность; дистрибутивы Linux не спешили прибывать в соединение (Fedora 18 принял его, Debian и Ubuntu все еще не сдвинулись с места), таким образом, оно обычно требует, чтобы системный администратор настроил его вручную. Однако современные дистрибутивы Linux монтируют tmpfs файловую систему где-нибудь; последние версии стандартной библиотеки требуют его. Стандартное местоположение для tmpfs /run
, с /run/shm
будучи мировым перезаписываемым (те же полномочия как /tmp
), но некоторые дистрибутивы еще не могут иметь его; посмотрите на /dev/shm
и возможно другие местоположения.
Ваши вопросы не совершенно ясны мне, но это почти читает, как будто у Вас есть данные, которые Вы хотите импортировать в OpenOffice. Если это так, затем я использовал бы один из этих подходов ниже.
Файл CSV
Я выписал бы те данные к файлу CSV (.csv
) и затем открытый тот файл в OpenOffice.
csv2odf
Другая идея состояла бы в том, чтобы использовать инструмент командной строки csv2odf
записать Ваши отформатированные данные CSV в файл ODF.
Просто открытие файла
Однако, если Вы просто просто пытаетесь открыть документ ODF из командной строки затем, необходимо смочь сделать это как так:
$ openoffice "$openOfficeDoc"
Передача по каналу содержания к OpenOffice
В рассмотрении этого несколько способов, которыми я не верю, существуют метод, который позволит Вам делать следующее:
$ echo "$data" | openoffice
Ограничивающим фактором не является Linux все же. Можно повторить данные, хранившие в переменных очень хорошо, и передать их по каналу к инструментам, которые знают, как открыть входящие данные файла по их STDIN.
$ echo $data|strings| head -10
[Content_Types].xml
E`2+
)+Bp_9
no+yV
2q^QF
M xv
C1lA
d:NA
_rels/.rels
b"gi
Ограничивающим фактором здесь является OpenOffice. В просмотре это - опции, я не видел метода для подключения коаксиальным кабелем его для открытия данных через STDIN. Это только знает, как открыть файлы.
Это не действительно ответ на Ваш вопрос, но полная альтернатива тому, что Вы в настоящее время пытаетесь сделать: просто используйте или менеджер паролей как Открытие или сохраните Ваши пароли как GPG-зашифрованный простой текст.
И Apache Открывает, Office и Libre Office имеют способность сохранить файл с паролем - шифрование его с, например, шифр или AES.
Ищите флажок "Save With Password" на диалоговом окне "Save As". Вам затем предложат пароль и подтвердить пароль.
Open/Star/Libreoffice может получать данные из STDIN через мост Python-UNO. Входные данные затем могут попасть в любой документ Libreoffice, здесь это документ Writer.
Это было протестировано на Ubuntu 16.04 с Libreoffice5. Вам нужен интерпретатор python, в который включены библиотеки uno! Libreoffice должен быть запущен как служба:
# soffice "--accept=socket,host=localhost,port=2002;urp;" --writer
# echo "test" | ./reader_uno.py
#!/usr/bin/python3
import sys
import uno
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", localContext )
# connect to the running office
ctx = resolver.resolve( "uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext" )
smgr = ctx.ServiceManager
# get the central desktop object
desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop",ctx)
# access the current writer document
model = desktop.getCurrentComponent()
# access the document's text property
text = model.Text
# create a cursor
cursor = text.createTextCursor()
# read from STDIN and insert the text into the document
for line in sys.stdin:
sys.stdout.write(line)
text.insertString(cursor,line, 0 )
ctx.ServiceManager
Более подробную информацию можно найти в моем блоге "bitkistl".
http://www.bitkistl.com/2016/02/libreopenstaroffice-hints-and-tips.html
Существует только zsh -решение:
oofice =(echo $openOfficeDoc)
Я часто использую его с моим инструментом cli, который выводит некоторый CSV (с libreoffice, но это та же самая идея ).
Если вы хотите придерживаться bash, вы все равно можете установить zsh и вызывать его только для этой команды:
TMP=$openOfficeDoc zsh -c 'oofice =(echo $TMP)'
ПРИМЕЧАНИЕ. :Нотация zsh/bash <()
не работает с ooffice/libreoffice согласно моему тесту, см. возможное объяснение .