quarta-feira, 18 de janeiro de 2017

Histórico de comandos do GNU Bash

Desafio: como executar um comando sem armazenar o registro desse comando executado no arquivo registrador de comandos executados?

Contexto: É perigoso deixar no histórico registrador de comandos um comando do tipo "rm -rfv /usr/share/doc/libgpg-error-1.24/", quando tal comando foi executado pelo usuário root. Se repetido por acidente, esse comando poderia prejudicar o sistema, apagando acidentalmente um diretório e (ou) um arquivo de sistema importante. Existem dois métodos para se conseguir o efeito desejado:

1º método:

Incluir a seguinte linha no arquivo </etc/profile>:

HISTCONTROL=ignorespace
ou
HISTCONTROL=ignoreboth

 
2º método:

Incluir a seguinte linha no arquivo </etc/profile>:

HISTIGNORE=[ ]*
ou
HISTIGNORE=[ ]*:&

Feitas essas configurações, executar um logoff e um logon e executar o comando desejado sempre iniciado pelo caractere espaço;

quinta-feira, 12 de janeiro de 2017

Renomear vários arquivos

Problema: renomear vários arquivos, cujos nomes não tem um padrão de 
sequência de caracteres.


for i in *.txt; do mv -v $i `echo $i | cut -d. -f1`.make-install.log.txt; done

Obs.: comando proposto por Giovanni Kenpachi <https://www.vivaolinux.com.br/~giovannikenpachi> no fórum Viva o Linux <https://www.vivaolinux.com.br/topico/Comandos/Renomear-varios-arquivos-simultaneamente-1>.

“bigreqsproto-1.1.2-make.log.txt” -> “bigreqsproto-1.make-install.log.txt”
“compositeproto-0.4.2-make.log.txt” -> “compositeproto-0.make-install.log.txt”
“damageproto-1.2.1-make.log.txt” -> “damageproto-1.make-install.log.txt”
“dmxproto-2.3.1-make.log.txt” -> “dmxproto-2.make-install.log.txt”
“dri2proto-2.8-make.log.txt” -> “dri2proto-2.make-install.log.txt”
“dri3proto-1.0-make.log.txt” -> “dri3proto-1.make-install.log.txt”
“fixesproto-5.0-make.log.txt” -> “fixesproto-5.make-install.log.txt”
“fontsproto-2.1.3-make.log.txt” -> “fontsproto-2.make-install.log.txt”
“glproto-1.4.17-make.log.txt” -> “glproto-1.make-install.log.txt”
“inputproto-2.3.2-make.log.txt” -> “inputproto-2.make-install.log.txt”
“kbproto-1.0.7-make.log.txt” -> “kbproto-1.make-install.log.txt”
“presentproto-1.0-make.log.txt” -> “presentproto-1.make-install.log.txt”
“randrproto-1.5.0-make.log.txt” -> “randrproto-1.make-install.log.txt”
“recordproto-1.14.2-make.log.txt” -> “recordproto-1.make-install.log.txt”
“renderproto-0.11.1-make.log.txt” -> “renderproto-0.make-install.log.txt”
“resourceproto-1.2.0-make.log.txt” -> “resourceproto-1.make-install.log.txt”
“scrnsaverproto-1.2.2-make.log.txt” -> “scrnsaverproto-1.make-install.log.txt”
“videoproto-2.3.3-make.log.txt” -> “videoproto-2.make-install.log.txt”
“xcmiscproto-1.2.2-make.log.txt” -> “xcmiscproto-1.make-install.log.txt”
“xextproto-7.3.0-make.log.txt” -> “xextproto-7.make-install.log.txt”
“xf86bigfontproto-1.2.0-make.log.txt” -> “xf86bigfontproto-1.make-install.log.txt”
“xf86dgaproto-2.1-make.log.txt” -> “xf86dgaproto-2.make-install.log.txt”
“xf86driproto-2.1.1-make.log.txt” -> “xf86driproto-2.make-install.log.txt”
“xf86vidmodeproto-2.3.1-make.log.txt” -> “xf86vidmodeproto-2.make-install.log.txt”
“xineramaproto-1.2.1-make.log.txt” -> “xineramaproto-1.make-install.log.txt”
“xproto-7.0.29-make.log.txt” -> “xproto-7.make-install.log.txt”


Atenção:

Saída do comando <echo 'for i in *.txt; do mv -v $i `echo $i | cut -d. -f1`.make-install.log.txt; done'>:
(( Com aspas simples antes da palavra "for" e após a palavra "done" ))

for i in *.txt; do mv -v $i `echo $i | cut -d. -f1`.make-install.log.txt; done



Saída do comando <echo "for i in *.txt; do mv -v $i `echo $i | cut -d. -f1`.make-install.log.txt; done">:
(( Com aspas duplas antes da palavra "for" e após a palavra "done" ))

for i in *.txt; do mv -v xproto-7.0.29-make.log.txt xproto-7.make-install.log.txt; done

Note que foi exibido o resultado após a execução do comando "for".

quarta-feira, 11 de janeiro de 2017

Expansão de Comandos no bash

Expansão de Comandos no bash


Presumindo que comando mount mais recente foi:

mount -v -t vfat /dev/sdb1 /media/usb0/

Utilizar o quinto parâmetro passado para o mount (o parâmetro </media/usb0/>) em um
comando umount:

umount -v !mount:5

Comando resultante da expansão:

umount -v /media/usb0

terça-feira, 10 de janeiro de 2017

ssh

Jaboatão dos Guararapes, PE, terça-feira, 10 de janeiro de 2017.

==============================
==============================


Assunto: ssh


==============================
==============================


Saída do comando <ssh jamenson@lfs-comp02> no computador asus:

Permission denied (publickey).

Motivo: a chave pública do usuário requisitante da conexão não foi
encontrada no arquivo [authorized_keys] do usuário.


==============================
==============================

Procedimento de resolução 1:

1 - No computador remoto, deve-se permitir o acesso via "autenticação por senha"

1.1 - No arquivo </etc/ssh/ssd_config>, configurar a opção "PasswordAuthentication" para "yes"

1.2 - Reiniciar o servidor (systemctl restart sshd.service).

2 - No computador local, deve-se copiar a chave pública gerada localmente para o computador remoto

2.1 - Executar o comando <ssh-copy-id -i /home/jamenson/.ssh/id_rsa.pub jamenson@lfs-comp02:>


Procedimento de resolução 2:

1 - Exportar a chave pública do usuário requisitante da conexão:

cat /home/jamenson/.ssh/id_rsa.pub > authorized_keys

2 - Copiar o arquivo [authorized_keys] para o diretório $HOME do usuário
no computador remoto.


==============================
==============================


Problema: ao executar o aplicativo como usuário "jamenson", o computador
"multilaser" (debian 8) respondeu o seguinte:

ssh: connect to host 192.168.0.20 port 22: Connection refused

Obs.: instalar o Servidor SSH, pois não vem instalado por padrão no
Debian GNU/Linux 8:

# apt-get install openssh-server


==============================
==============================