Apagar ultimo comando do history dentro do script

1. Apagar ultimo comando do history dentro do script

Renan
renanpessoa

(usa openSUSE)

Enviado em 21/09/2016 - 21:52h

Olá Pessoal, tudo bem ?

Estou desenvolvendo um script que ao ser executado vai ter um parâmetro -p para passar a senha por linha de comando, ficando assim: ./script.sh -p senha123 pois este script será executado diversas vezes durante o dia, o ideal seria salvar o comando em um txt com a senha já salva.

Por questões de segurança é necessário apagar o último comando executado do history, pois outro usuário poderia saber a senha executando um history.

Pesquisei muito na internet mas não consegui resolver o problema, segue um dos testes que eu utilizei:


#!/bin/bash

HISTFILE=~/.bash_history
set -o history # Ativa o comando history dentro do script

for i in `history | tail -10 | awk '{print $1}'`;do
history -d $i 2>/dev/null;
done;

history -w


Após executar este comando eu saio do terminal e entro novamente, porém o comando ainda está lá, vocês podem me ajudar por favor ? O comando será executado como root.

Obrigado !


  


2. Re: Apagar ultimo comando do history dentro do script

Perfil removido
removido

(usa Nenhuma)

Enviado em 22/09/2016 - 00:23h

Do que se trata esse script? A senha não poderia ficar fixa no script?


3. Re: Apagar ultimo comando do history dentro do script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/09/2016 - 10:40h

renanpessoa escreveu:

Olá Pessoal, tudo bem ?

Estou desenvolvendo um script que ao ser executado vai ter um parâmetro -p para passar a senha por linha de comando, ficando assim: ./script.sh -p senha123 pois este script será executado diversas vezes durante o dia, o ideal seria salvar o comando em um txt com a senha já salva.

Por questões de segurança é necessário apagar o último comando executado do history, pois outro usuário poderia saber a senha executando um history.

Pesquisei muito na internet mas não consegui resolver o problema, segue um dos testes que eu utilizei:


#!/bin/bash

HISTFILE=~/.bash_history
set -o history # Ativa o comando history dentro do script

for i in `history | tail -10 | awk '{print $1}'`;do
history -d $i 2>/dev/null;
done;

history -w


Após executar este comando eu saio do terminal e entro novamente, porém o comando ainda está lá, vocês podem me ajudar por favor ? O comando será executado como root.
Obrigado !


Bom dia.
O "outro usuario" não tem acesso ao history dos demais usuarios. . .
De qquer forma . . .
sed -i "/$SEU_COMANDO/d" .bash_history


att.:
marcelo oliver


4. Re: Apagar ultimo comando do history dentro do script

Renan
renanpessoa

(usa openSUSE)

Enviado em 22/09/2016 - 20:00h

Olá marcelo,


Agradeço a atenção e a ajuda, como informado em minha pergunta o comando será executado como root, então todos os usuários terão acesso ao histórico.

Esse script será executado em diversos servidores como root por várias pessoas, como a senha que será digitada é muito grande, seria mais facil deixar o comando com a senha salva em um arquivo de texto e basta copiar e colar.

Deixei o código assim no arquivo history.sh:

#!/bin/bash

sed -i "/history.sh/d" ~/.bash_history


Infelizmente após executar o comando ainda fica salvo no history, mesmo saindo e entrando novamente do terminal:


35 ./history.sh
36 history
37 ./history.sh
38 ./history.sh -p senha
39 ./history.sh
40 history
41 ./history.sh
42 history






5. Re: Apagar ultimo comando do history dentro do script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/09/2016 - 20:50h

renanpessoa escreveu:

Olá marcelo,


Agradeço a atenção e a ajuda, como informado em minha pergunta o comando será executado como root, então todos os usuários terão acesso ao histórico.

Esse script será executado em diversos servidores como root por várias pessoas, como a senha que será digitada é muito grande, seria mais facil deixar o comando com a senha salva em um arquivo de texto e basta copiar e colar.

Deixei o código assim no arquivo history.sh:

#!/bin/bash

sed -i "/history.sh/d" ~/.bash_history


Infelizmente após executar o comando ainda fica salvo no history, mesmo saindo e entrando novamente do terminal:


35 ./history.sh
36 history
37 ./history.sh
38 ./history.sh -p senha
39 ./history.sh
40 history
41 ./history.sh
42 history


----------------------------------------------------------------
Não tinha observado que o comando é executado como root . . . :)

Parece que é problema no caminho do ".bash_history"
Coloque o caminho a partir da raiz.
sed -i '/history.sh/d' /root/.bash_history
Testei aqui e funcionou...

cat .bash_history
upgradepkg --install-new google-chrome-53.0.2785.116-x86_64-1.txz
ifconfig wlan0
ifconfig eth0
ping -c4 8.8.8.8
ifconfig eth0
exit


cat HISTORY.sh
#!/bin/bash
sed -i "/ifconfig/d" /root/.bash_history


./HISTORY.sh

cat .bash_history
upgradepkg --install-new google-chrome-53.0.2785.116-x86_64-1.txz
ping -c4 8.8.8.8
exit


OBS.: OS COMANDOS "SOMEM" do "history", SOMENTE APOS FECHAR e REABRIR o TERMINAL

Att.:
marcelo oliver





6. Re: Apagar ultimo comando do history dentro do script

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/09/2016 - 00:14h

Não sei se adianta mas history -c apaga os comandos do histórico.
Não mexe no que existe em .bash_history.
Apenas limpa no momento.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



7. Re: Apagar ultimo comando do history dentro do script

Alan Victor
alanvictorjp

(usa Debian)

Enviado em 23/09/2016 - 03:17h

Galera, o history é gravado em 2 locais
1 na ram, na sessão da bash/history
2 uma copia da sessão para o arquivo .bash_history no memento de logout ou exit

Acredito que o brother ai quer apagar da sessão para depois não ser gravado no arquivo

Teu comando para remover a linha la está sendo executado dentro de um script, consequentemente em outra sessão bash.
Pra resolver teu problema, tenta chamar teu script com o comando source na sessão que você executou a linha com password ou testa com essa solução abaixo:

joga esse code no .bashrc

remove_history() {
while : ; do
#substituir 'regex' por uma regex da linha desejada, do password
hist=$(history | grep 'regex' | sed 's/^\s\+\([0-9]\+\).*/\1/' | sed -n 1p)
if [[ ! -z $hist ]] ; then
history -d $hist
else
return 1
fi
done
}

depois é só chamar a função no ambiente

Espero ter ajudado.



8. Re: Apagar ultimo comando do history dentro do script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 24/09/2016 - 12:18h

renanpessoa escreveu:

Olá Pessoal, tudo bem ?

Estou desenvolvendo um script que ao ser executado vai ter um parâmetro -p para passar a senha por linha de comando, ficando assim: ./script.sh -p senha123 pois este script será executado diversas vezes durante o dia, o ideal seria salvar o comando em um txt com a senha já salva.

Por questões de segurança é necessário apagar o último comando executado do history, pois outro usuário poderia saber a senha executando um history.

Pesquisei muito na internet mas não consegui resolver o problema, segue um dos testes que eu utilizei:


#!/bin/bash

HISTFILE=~/.bash_history
set -o history # Ativa o comando history dentro do script

for i in `history | tail -10 | awk '{print $1}'`;do
history -d $i 2>/dev/null;
done;

history -w

Após executar este comando eu saio do terminal e entro novamente, porém o comando ainda está lá, vocês podem me ajudar por favor ? O comando será executado como root.
Obrigado !


-------------------------------------------------
Bom dia renanpessoa.
Segue mais uma dica, mais pratica do que a minha DICA anterior . . .
No final do SCRIPT, coloque o comando:
unset HISTFILE && COMANDO_PARA_FECHAR_O_TERMINAL 


att.:
marcelo oliver







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts