Teste se o login é uma conexão scp

4

Estou ecoando várias estatísticas de máquinas no login, mas isso é problemático para SCP e SFTP, existe uma variável de shell que eu possa testar?

    
por atx 28.12.2010 / 09:53

3 respostas

7

No bash, eu uso shopt -q login_shell para testar isso. Por exemplo, em .bashrc:

if shopt -q login_shell
then
    echo "interesting stuff"
fi

Isso deve manter as "coisas interessantes" fora do seu scp / sftp.

    
por 28.12.2010 / 10:33
4

De acordo com a página man, você deve testar a presença de "i" em $- .

PS1 is set and $- includes i if bash is interactive, allowing a shell script or a startup file to test this state.

Por exemplo:

if [[ $- == *i* ]]
then
    # do interactive stuff
fi
    
por 28.12.2010 / 16:08
1

Historicamente, em shells estilo bourne configurados de maneira limpa, é "teste se PS1 está definido", mas isso é quebrado se algum joker exportar PS1 para o ambiente.

O método compatível com os padrões do SUS é testar se 'i' está em $ -, como Dennis observa, embora [[...]] não seja padrão, como é o == comparador. Portanto, a verificação mais compatível com os padrões é:

case $- in
 *i*) # do interactive stuff
  ;;
esac

Então você tem shopt -q login_shell para o bash (por Cakemox) e ambos [[ -o interactive ]] e [[ -o login ]] para zsh.

    
por 05.01.2011 / 10:48