Как скопировать строку в буфер обмена X Window с помощью командной строки в Red Hat без использования xsel или какого-либо стороннего -инструмента?

Сначала запустите snmptrapd для прослушивания IPv6:

/usr/sbin/snmptrapd -On -Lsd -f -p /run/snmptrapd.pid udp:162,udp6:162

Тогда отправьте ловушку:

/usr/bin/snmptrap -Lo -v2c -c public udp6:[2001:db:8::beef]:162 "".1.3.6.1.2.1.31337.0
0
14.09.2021, 09:56
1 ответ

Стандартная библиотека Python включает модульtkinter(Tkinter в Python 2 ), через который вы можете получить доступ к буферу обмена X.

python3 -c 'import sys, tkinter; sys.stdout.write(tkinter.Tk().clipboard_get())'
python2 -c 'import sys, Tkinter; sys.stdout.write(Tkinter.Tk().clipboard_get())'

Вы также можете установить содержимое буфера обмена, но это немного сложнее, поскольку содержимое буфера обмена принадлежит работающему приложению. Такие программы, как xsel, оставляют запущенным фоновый процесс, пока они владеют буфером обмена. Вот простой фрагмент кода, который вам нужно выполнять до тех пор, пока содержимое вас не перестанет интересовать; закройте окно, когда закончите.

echo -n 'new clipboard content' | python3 -c 'import tkinter; w = tkinter.Tk(); w.clipboard_clear(); w.clipboard_append(input()); w.mainloop()'
echo -n 'new clipboard content' | python2 -c 'import Tkinter, sys; w = Tkinter.Tk(); w.clipboard_clear(); w.clipboard_append(sys.stdin.read()); w.mainloop()'

(Есть лучшие способы доступа к буферу обмена в Python, такие как pyperclip , который является кроссплатформенным -и не требует отображения окна, но они не являются частью стандартной библиотеки.)

2
14.09.2021, 11:53

Теги

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