Comandos
printf 'ABC$def%hx\n' 10 # output: ABC$defa
printf 'ABC$def%s\n' 10 # output: ABC$def10
funciona como esperado... mas não consigo encontrar nenhuma informação sobre %h.
Ele está disponível em todos os sistemas?
Comandos
printf 'ABC$def%hx\n' 10 # output: ABC$defa
printf 'ABC$def%s\n' 10 # output: ABC$def10
funciona como esperado... mas não consigo encontrar nenhuma informação sobre %h.
Ele está disponível em todos os sistemas?
Essa questão recente sobre assembly chamou minha atenção, não pelas instruções obviamente redundantes, mas pelas sys_write
saídas.
O programa tenta gerar todos os 256 caracteres ASCII e faz isso começando com ASCII 48, passando de 255 a 0 e terminando com 47.
A saída que o solicitante gentilmente fornece é:
└─$ ./example_displayascii
0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������
Eu poderia aceitar que os 128 códigos ASCII estendidos fossem impressos dessa forma, mas o que aconteceu com os códigos de 0 a 31, e especialmente os códigos de 32 a 47, que claramente devem ser caracteres imprimíveis!
Minhas perguntas:
sys_write
com os códigos (de controle) de 0 a 31?Estou tentando popular um array em Bash com WSL2. Tenho um arquivo de texto de entrada que estou tentando analisar usando awk
. Quero extrair as informações abaixo de YOLOargs em um array separado por espaços, exceto o caminho do arquivo entre aspas, que quero extrair por inteiro.
Aqui está o arquivo de texto de exemplo ( argstext
):
Pipelines:
YOLO-Goby
Pipeline Container Arguments:
Bubblerargs:
python Collect_Unpack.py --primary_images --processes 1 --every_nth 25 --output_folder
YOLOargs:
python 03_YOLO_infer_no_labels.py --img_list_txt --output_name inference_output_test --confidence 0.1 --weights "/mnt/c/Users/jmilitello/OneDrive - DOI/ARIS_MLM_Files/Literature/Literature for Pete/Code/best.pt"
Até agora usei apenas o seguinte para extrair as informações abaixo YOLOargs
:
YOLOcontainerargs=($(awk -F' ' 'c&&c--;/.*YOLOargs:/{c=1}' "${argstext}"))
Isso criará uma matriz, mas os elementos do caminho do arquivo serão separados por todos os espaços em vez de serem um único elemento.
Eu tenho isso
$ cat test.sh
echo "https://bitbucket.dev.global.server.com/scm/xyz/abd.git"
echo "ssh://[email protected]:6699/xyz/abc.git"
echo "http://bitbucket.dev.global.server.com/abc"
echo "ssh://[email protected]/xyz/abc"
echo "http://bitbucket.dev.global.server.com"
echo "ssh://[email protected]/xyz/abc.git"
Quero um comando de uma linha (de preferência o comando sed) que extraia o nome do servidor da URL. por exemplo
bitbucket.dev.global.server.com
Eu tentei isso, mas não funciona
$ ./test.sh | sed 's/\(\/\/\|\@\)/&\n/;s/.*\n//;s/\(\:\|\/\)/\n&/;s/\n.*//'
bitbucket.dev.global.server.com
[email protected]
bitbucket.dev.global.server.com
[email protected]
bitbucket.dev.global.server.com
[email protected]
Ainda tem o usuário e o símbolo @. Como fazer isso?
Posso esperar por uma das várias conexões de rede usando select
ou epoll
. Posso esperar por um sinal usando sigwaitinfo
ou adicionar um manipulador para executar no recebimento do sinal.
Como posso esperar que um soquete de rede tenha tráfego de entrada ou um sinal específico (SIGWINCH, no meu caso)?
Uma ideia que me ocorre é fazer com que o manipulador de sinal envie tráfego "loopback" para algum descritor de arquivo aberto, para que epoll
possa aguardá-lo. Mas eu preferiria não criar nenhum arquivo. Talvez haja uma maneira de criar dois novos descritores de arquivo que sejam conectados diretamente um ao outro?
Estou escrevendo um serviço bastion simples que registrará a entrada/saída de uma sessão ssh. A parte da conexão ssh se parece com:
func connect(user, host string, logger sessionLogger) error {
cmd := exec.Command("ssh", user+"@"+host)
t, err := pty.Start(cmd)
if err != nil {
return err
}
defer t.Close()
go func() {
buf := make([]byte, 1024)
for {
n, err := t.Read(buf)
if err != nil {
break
}
os.Stdout.Write(buf[:n])
logger(buf[:n])
}
}()
go func() { io.Copy(t, os.Stdin) }()
return cmd.Wait()
}
O problema é que todos os comandos inseridos pelo usuário são ecoados no PTY duas vezes, assim:
Tentei brincar com o stdin/stdout de um cmd, inclusive não usando o pty, mas tive vários problemas estranhos, por exemplo, nenhuma saída do prompt de comando, etc., a maioria deles relacionados à natureza do stdout de um comando (deve ser um pty).
Este é o melhor resultado que tenho agora. Mas preciso eliminar o eco excessivo do comando.
Estou usando blockinfile
o módulo do Ansible para adicionar um bloco de linhas entre linhas específicas em um arquivo. O bloco deve ser recuado com 8 espaços. No entanto, quando executo o playbook, as linhas são inseridas no início da linha (sem recuo), ignorando os espaços que adicionei no bloco. Aqui está o playbook que estou usando:
- name: Add lines between specific lines with 8 spaces of indentation
hosts: all
tasks:
- name: Add lines
ansible.builtin.blockinfile:
path: /path/to/my/file
marker: "# {mark} Do not edit manually"
insertbefore: '^\s*the line that exists'
block: |
# first line
second line
Comportamento esperado: O bloco deve ser inserido assim, com 8 espaços de recuo:
# BEGIN ANSIBLE MANAGED BLOCK
# first line
second line
# END ANSIBLE MANAGED BLOCK
Comportamento real: O bloco é inserido sem recuo:
# BEGIN ANSIBLE MANAGED BLOCK
# first line
second line
# END ANSIBLE MANAGED BLOCK
Tentei adicionar espaços diretamente no bloco, mas eles estão sendo ignorados. Existe uma maneira de fazer blockinfile
respeitar o recuo do bloco inserido?
No gnuplot, ao preencher o espaço entre duas curvas, fazemos:
plot "data" using 1:2,/
"data" using 1:3,/
"data" using 1:2:3 with filledcurves,\
"data2" using 1:2,/
"data2" using 1:4,/
"data2" using 1:2:4 with filledcurves
Como posso fazer o mesmo, mas com 1:2 do arquivo "data", mas "3" do arquivo "data2"? Sem modificar os bancos de dados, é claro.
Ou seja, quero preencher o espaço entre a 2ª coluna de data e a 4ª coluna de data2. Então seria algo como:
plot "data" using 1:2,/
"data2" using 1:4,/
??????????? with filledcurves
EDITAR
Exemplo de dados de arquivo:
1736683200 24.28 24.83 1012 79 0.0 12 56
1736694000 24.71 25.09 1011 71 0.0 17 38
1736704800 24.29 24.6 1010 70 0.0 10 53
1736715600 23.6 24.03 1012 77 0.13 7 66
1736726400 23.05 23.47 1011 79 0.32 7 79
1736737200 22.37 22.8 1010 82 0.18 3 88
1736748000 22.15 22.61 1012 84 0.22 4 66
1736758800 22.92 23.36 1012 80 0.49 2 77
1736769600 24.33 24.72 1011 73 0.35 12 41
1736780400 24.62 24.89 1010 67 0.0 15 27
....
arquivo data2 amostra:
1736676000 24.6 21.4 1011.8 0 0.0 13.0 85
1736679600 24.9 21.3 1011.6 0 0.0 16.7 83
1736683200 25.2 21.2 1011.4 0 0.0 18.5 74
1736686800 25.2 21.1 1010.9 0 0.0 18.5 76
1736690400 25.2 21.0 1010.3 0 0.0 18.5 78
1736694000 25.2 20.9 1009.8 0 0.0 20.4 82
1736697600 24.7 20.7 1009.8 0 0.0 18.5 82
1736701200 24.2 20.5 1009.7 0 0.0 16.7 83
1736704800 23.7 20.4 1009.7 0 0.0 14.8 83
1736708400 23.6 20.4 1010.3 0 0.0 13.0 85
Com a edição 2024.3.1.1 do PyCharm Community no Linux Mint, recebo uma exceção ao chamar os.stat em arquivos de sistema como "/usr/bin/chromium". Chamar o mesmo script como o mesmo usuário com o interpretador Python diretamente funciona.
Exemplo de script test.py:
import os
if __name__ == '__main__':
print( os.stat("/usr/bin/chromium") )
produz o seguinte erro:
File "/home/user/test.py", line 4, in <module>
print( os.stat("/usr/bin/chromium") )
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/chromium'
O interpretador usado no pycharm é /usr/bin/python3.
Quando chamar script diretamente com
/usr/bin/python3 test.py
tudo funciona como esperado.
Qual é o motivo e como executar o script no PyCharm?
O serviço fail2ban não está funcionando, mas a regex corresponde...
essa é minha configuração:
sudo nano /etc/fail2ban/filter.d/login_eiren_studio.conf
[Definition]
datepattern =\[%%Y-%%m-%%d\s%%H:%%M:%%S\s%%z\]
failregex =^\s\|\sIP:\s<HOST>\s.*$
ignoreregex =
sudo nano /etc/fail2ban/jail.local
[login_eiren_studio]
enabled = true
filter = login_eiren_studio
logpath = /var/www/openvscode/proyectos/login.eiren.studio/logs/badauth.log
maxretry = 5
bantime = 3600
findtime = 600
e os troncos...
[2025-01-02 12:43:58 +0100] | IP: 85.87.24.22 | Dispositivo: Windows 10 | Navegador: Chrome 131.0.0.0 | Usuario: intento de login: [email protected] | Mensaje: Error: El usuario existe pero la contraseña no es correcta.
[2025-01-02 12:52:18 +0100] | IP: 85.87.24.22 | Dispositivo: Windows 10 | Navegador: Chrome 131.0.0.0 | Usuario: intento de login: [email protected] | Mensaje: Error: El usuario existe pero la contraseña no es correcta.
quando tento com fail2ban-regex corresponde aos logs IMAGEM
Mas quando coloco fail2ban-client status login_eiren_studio tenho 0 falhas de autenticação, meu fuso horário é Europa/Madrid no meu computador e nos logs também IMAGEM
Nada nos logs do fail2ban, eu configurei como padrão (root) e tenho permissões de leitura nos logs
Alguma ideia? Obrigado ;)