O MatrixCli é um cliente Matrix simples baseado no Matrix-Python-SDK. Se você se perguntar como isso é útil, consulte os aplicativos
Você pode instalar o MatrixCli usando o Setup.py no diretório do projeto root. Isso também instalará todas as dependências necessárias.
git clone https://github.com/saadnpq/matrixcli.git
cd ./matrixcli
sudo ./install.shIsso colocará o script MatrixCli no seu caminho, instalará um arquivo de configuração de modelo em/etc/matrixcli e arquivo de unidade Systemd em/lib/systemd/user
Para usuários do Ubuntu, você precisa instalar primeiro o Python3-Setuptupols antes de executar os comandos acima
sudo apt install python3-setuptoolsPara ativar o serviço Systemd, você pode executar o seguinte.
systemctl --user enable --now matrixcliA configuração da conta é feita através do arquivo config.py em um dos locais seguintes classificados pela precedência
Esta é uma configuração de amostra de uma conta.
def password_eval ():
return "Y0UrPredIctabLePA$$w0ord"
accounts = [{ "server" : "https://matrix.org/" ,
"username" : "putYourUserNameHere" ,
"passeval" : password_eval }]
# the password_eval function can be named any thing as long as
# it matches the function definition
ignore_rooms = [ "room_id" , "another_room_id" ]
# note: room_id not room_alias (run matrixcli rooms to get the room_id) O arquivo de configuração deve ter uma variável accounts que contém uma lista de dicionários em que todo dicionário consiste no servidor de informações da conta, nome de usuário e senha
A lógica por trás da definição de uma função que retorna o valor da senha é que, se você não quiser escrever sua senha em texto simples, pode escrever qualquer código python que deseje que gera ou lê a senha de um arquivo criptografado ou um anel de chave
A lista Ignore_rooms contém quartos que você deseja ignorar ao calcular mensagens não lidas e no modo de escuta
Se você não deseja criar um arquivo de configuração, pode passar no servidor, nome de usuário e senha através de argumentos da linha de comando. Veja o uso
Suponha que você tenha o seguinte arquivo de configuração
def account1_password_eval ():
return "account1secretpassword"
def account2_matrixorg_password_eval ():
return "account2secretpassword"
def account3_password_eval_any_name ():
return "yXkdsjhslkjhdlksjhffffffkkssskjsdhkljhssdc"
accounts = [
{ "server" : "https://example.com" ,
"username" : "account1" ,
"passeval" : account1_password_eval },
{ "server" : "https://matrix.org" ,
"username" : "account2" ,
"passeval" : account2_matrixorg_password_eval },
{ "server" : "https://example.com" ,
"username" : "account3" ,
"passeval" : account3_password_eval_any_name },]
ignore_rooms = [ "room_id" , "another_room_id" ] Se você não especificou nenhuma opção de linha de comando, o programa usará a primeira conta na lista de contas. Para usar qualquer outra conta, é suficiente para passar a opção -u ou –Username para o comando com o nome de usuário dessa conta.
por exemplo
matrixcli -u account3 getroomsEsse comando fará login com os parâmetros da terceira conta.
Se você tiver duas ou mais contas com o mesmo nome de usuário, mas com servidores diferentes. Você pode especificar a opção -erver para assar as contas possíveis para a conta desejada.
Abaixo estão as maneiras pelas quais eu pessoalmente uso MatrixCli,
O primeiro motivo a fazer esse programa foi que eu não queria manter a página da Web aberta ou executar um aplicativo de elétrons apenas para notificações.
Você pode ativar o serviço Systemd, para obter notificações para os eventos quando eles vêm.
systemctl --user enable --now matrixcli
Usando matrixcli unread você escreve um módulo para qualquer barra de status para exibir mensagens não lidas. Aqui está um exemplo simples para poliBar
[module/matrix]
type = custom/script
exec = matrixcli unread -f 2> /dev/null
tail = true
interval = 30
format = <label>
label = M[%output%]
format-underline = # 268bd2 Por exemplo, tenho esse trabalho de Cron que envia todos os dias uma música aleatória do meu diretório de música para uma sala específica.
0 0 * * * /usr/local/bin/matrixcli send -r ' !OSPeUVrwMKbIrLQuBX:matrix.org ' $( tree /home/pi/musiqa -fi | grep " .*.mp3 " | shuf | sed 1q )E eu o uso em muitos scripts em servidores remotos para me notificar sobre uma saída de script ou apenas quando algo der errado.
Para uma lista dos subcomando e opções executadas
matrixcli --help saída:
#usage: matrixcli [-h] [-s server] [-u username] [-p senha] [-c config]
{Envie, ouça, quartos, não lido, cauda} ...
cliente de matriz de linha de comando
Argumentos opcionais:
-h, --help Mostra esta mensagem de ajuda e saída
-s servidor, -servidor servidor
servidor para fazer login para
-u nome de usuário, --usename de nome de usuário
nome de usuário para fazer login com
-P Senha, -Password Senha
a senha
-C Config, -Config Config
arquivo de configuração personalizado
Subcomando:
{Envie, ouça, quartos, não lido, cauda}
Enviar Enviar algo para uma sala
Ouça ouvido para sempre para eventos
Os quartos recebem todos os quartos unidos
Não lido obtenha notificações não lidas
Últimas mensagens de impressão traseira
Para listar as opções de um sub comando específico (por exemplo, envio)
matrixcli send --help Todo subcomando que deveria agir em uma sala específica aceita o argumento opcional -r/–room-Id que leva o ID da sala para agir ou -a/–room_alias, que leva um alias da sala.
Para conseguir uma corrida de quarto de sala:
Quartos Matrixcli
produz o seguinte (para minha conta).
login .... logado .... 0: Momenamr:! Ocomuldomkojwyzxts: matrix.org 1: mahmoudhafez:! Fcxcmulziohnqomvxd: saadnpq.com 2: Emacs Matrix Client :! Zrzoyxeyfrzcbzknis: matrix.org 3: Elm3alem Zaki:! Oabjenlttvqgpqrpes: matrix.org 4: Matrix-python-sdk :! yhhmbtmgbhgqolgpaz: matrix.org 5: Emacs :! pwxniidhcbabnitssn: matrix.org 6: Moatazomar:!
Se você não especificou o ID da sala ou as alias da sala através da linha de comando, o programa solicitará que você com as salas unidas quando precisar.
matrixcli listenO ouve para sempre para eventos e saída de mensagens recebidas para notificações STDOUT e OS, se você estiver executando esse comando em um sistema sem cabeça ou o programa não enviou notificações por algum motivo, ele produzirá eventos apenas para stdout sem reclamar.
Você pode pressionar o CC para sair do modo de escuta.
Há também um serviço Systemd instalado com o programa que usa matrixcli listen , para ativá -lo, você pode executar o seguinte.
systemctl --user enable --now matrixcliRetorna as últimas N mensagens de uma sala.
matrixcli tail -h Uso: Matrixcli Tail [-h] [-r Room_id | -a Room_alias] [-f] [-n [1-100]]
Argumentos opcionais:
-h, --help Mostra esta mensagem de ajuda e saída
-r Room_id,-sala de sala de sala
Especifique o ID da sala
-a Room_alias,-Room-Alias Room_alias
Especifique o alias da sala por sala
-f, -siga aguarde as mensagens e impede -as quando eles vêm
-n [1-100],--MESSAGES [1-100]
Imprima as últimas mensagens especificadas
A opção -F imprime as últimas mensagens, mas aguarde novas mensagens e imprimi -las quando elas vêm.
Você também pode enviar mensagens enquanto estiver no modo de seguir digitando a mensagem que deseja enviar e pressionar Enter para enviá -la.
matrixcli send --help Uso: matrixcli envia [-h] [-r Room_id | -a Room_alias] [-t | -f] conteúdo
Argumentos posicionais:
contente
Argumentos opcionais:
-h, --help Mostra esta mensagem de ajuda e saída
-r Room_id,-sala de sala de sala
Especifique o ID da sala
-a Room_alias,-Room-Alias Room_alias
Especifique o alias da sala por sala
-t, -Text force o programa a tratar o conteúdo como mensagem de texto
-f, -File force o programa a tratar o conteúdo como um arquivo
O comando send leva o conteúdo que você deseja enviar como argumentos posicionais, o programa primeiro vê se o texto passado representa um arquivo que existe no sistema de arquivos; se assim for, tentará adivinhar seu tipo MIME com base na extensão para visualizar corretamente o conteúdo no final do receptor. Se o texto passado não representar nenhum arquivo no sistema de arquivos, o programa o tratará como uma mensagem de texto.
Para forçar o programa a tratar o conteúdo como um arquivo ou um texto, você pode especificar os argumentos opcionais - fil -FILE ou -TEXT.
matrixcli unread --help Uso: matrixcli não lido [-h] [-f] [-r Room_id | -a Room_alias]
Argumentos opcionais:
-h, --help Mostra esta mensagem de ajuda e saída
-f, -siga não feche a conexão e imprima o número de não lido
mensagens sempre que atualizadas
-r Room_id,-sala de sala de sala
Especifique o ID da sala
-a Room_alias,-Room-Alias Room_alias
Especifique o alias da sala por sala
Exerta mensagens não lidas para Room_id ou todos os quartos (exceto aqueles em Ignore_rooms) se nenhum Room_id ou Room_alias especificados