Distinguir entre o comando digitado por humano e executado por script

1

Por exemplo

$ pwd
/home/my_name

É possível ou não identificar que este comando é digitado por humanos ou executado por script.

    
por fronthem 02.07.2016 / 12:23

2 respostas

2

Não.

Um script ou função shell pode inspecionar $- e procurar por i (o que indica que este é um shell interativo), ou pode procurar por um tty de controle (com tty por exemplo), mas nenhum destes são métodos à prova de idiotas.

Mesmo se você, como root , registrasse todos os comandos executados da sessão de shell de um usuário, ou olhasse para o arquivo de histórico do shell, ainda não seria capaz de dizer se os comandos que você vê foram digitados ativamente por esse usuário ou inserido na linha de comando (ou no log) por um script, ou por algum outro meio.

    
por 02.07.2016 / 12:50
1

Embora não existam realmente métodos à prova de erros (ou falsificação) (pelo menos eu não sei), tecnicamente você pode verificar a diferença, por ex. por:

root@aw [~]# set > cons
root@aw [~]# cat ./test.sh
#!/bin/bash

set > scri
root@aw [~]# ./test.sh

então

root@aw [~]# diff cons scri

Existem muitas diferenças, selecione o que quiser.

    
por 02.07.2016 / 18:32