Действительно ли возможно питаться, Открывают Office via STDIN?

Когда я видел этот вид поведения, это обычно - что-то связанная сеть.

Вы не упоминали, соединялись ли Вы от работы или домой. Если бы Вы соединяетесь из дома, я перезагрузил бы персональный маршрутизатор, соединяющийся с Интернетом. Если бы Вы соединяетесь от работы, я согласовал бы с сетевой группой и узнал бы, изменилось ли что-то. Новый IPS/IDS? Новые определения или пороги для IPS/IDS? Новая политика брандмауэра? Новое значение тайм-аута?

Я чувствую, что можно хотеть начать смотреть за пределами SSH.

6
22.04.2014, 15:55
7 ответов

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

Вы не хотите, чтобы пароли были записаны в диск. Это прекрасно. Запишите им в файл, который не хранится на диске.

Много систем используют файловую систему в оперативной памяти (tmpfs) для /tmp. Солярис делал это целую вечность; дистрибутивы Linux не спешили прибывать в соединение (Fedora 18 принял его, Debian и Ubuntu все еще не сдвинулись с места), таким образом, оно обычно требует, чтобы системный администратор настроил его вручную. Однако современные дистрибутивы Linux монтируют tmpfs файловую систему где-нибудь; последние версии стандартной библиотеки требуют его. Стандартное местоположение для tmpfs /run, с /run/shm будучи мировым перезаписываемым (те же полномочия как /tmp), но некоторые дистрибутивы еще не могут иметь его; посмотрите на /dev/shm и возможно другие местоположения.

10
27.01.2020, 20:23
  • 1
    Ваше решение кажется самым соответствующим, оно покрывает не, только Открывают Office, но также и другое программное обеспечение, что также сила не примет вход от STDIN. +1 и принятый. –  Dor 18.09.2013, 14:45
  • 2
    @Dor, ответ христианина также работает со всеми программами, и это очень изящно. –  niutech 31.01.2016, 02:54

Импорт текстовых данных

Ваши вопросы не совершенно ясны мне, но это почти читает, как будто у Вас есть данные, которые Вы хотите импортировать в 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. Это только знает, как открыть файлы.

3
27.01.2020, 20:23
  • 1
    Спасибо за подробный ответ, но все те решения включают запись в диск... –  Dor 17.09.2013, 21:08
  • 2
    @Dor - хорошо, поскольку я сказал, что Ваш Q не ясен, пытаетесь ли Вы передать название файла или фактических данных через Ваш пример. Можно ли развернуть Q, таким образом, это более ясно? Показ данных, Вы - echo'ing, был бы большой справкой. –  slm♦ 17.09.2013, 21:10
  • 3
    @sim: данные, что я - echo'ing, являются фактическими данными openOffice файла (фактическое содержание, не название файла). –  Dor 17.09.2013, 21:13
  • 4
    @Dor - как в он "col1 | col2 | col3" данные ASCII или двоичный блоб файла? –  slm♦ 17.09.2013, 21:15
  • 5
    @sim: Это - двоичный блоб файла. (не ASCII) –  Dor 17.09.2013, 21:16

Это не действительно ответ на Ваш вопрос, но полная альтернатива тому, что Вы в настоящее время пытаетесь сделать: просто используйте или менеджер паролей как Открытие или сохраните Ваши пароли как GPG-зашифрованный простой текст.

0
27.01.2020, 20:23
  • 1
    Да мысль об этом, но этом неприятности меня, что я не могу использовать тип документа, который я хочу. Это просто не может быть невозможно, это - Linux :) Но простой текст действительно кажется самым легким выбором на данный момент. –  Dor 17.09.2013, 21:34

И Apache Открывает, Office и Libre Office имеют способность сохранить файл с паролем - шифрование его с, например, шифр или AES.

Ищите флажок "Save With Password" на диалоговом окне "Save As". Вам затем предложат пароль и подтвердить пароль.

0
27.01.2020, 20:23
[1120598]В качестве файла используйте анонимную трубку:[1282]См. также [1120961]https://stackoverflow.com/questions/345505/how-can-you-diff-two-pipelines-in-bash[1283]
1
27.01.2020, 20:23

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

0
27.01.2020, 20:23

Существует только zsh -решение:

oofice =(echo $openOfficeDoc)

Я часто использую его с моим инструментом cli, который выводит некоторый CSV (с libreoffice, но это та же самая идея ).

Если вы хотите придерживаться bash, вы все равно можете установить zsh и вызывать его только для этой команды:

TMP=$openOfficeDoc zsh -c 'oofice =(echo $TMP)'

ПРИМЕЧАНИЕ. :Нотация zsh/bash <()не работает с ooffice/libreoffice согласно моему тесту, см. возможное объяснение .

1
27.01.2020, 20:23

Теги

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