Como definir o alias para o shell de login não interativo / não?

1

Eu tenho um usuário (zabbix) com o shell configurado para /sbin/nologin . A casa do usuário é /var/lib/zabbix e inseri alias curl='curl -k' em ~zabbix/.bashrc . Porém não trabalha quando eu (para propósito de propósito de teste) sudo -u zabbix curl https://HOST-WITH-INVALID-ISSUER-CERTIFICATE , retorna nulo.

Na verdade, o comando curl https://HOST-WITH-INVALID-ISSUER-CERTIFICATE será executado remotamente via zabbix-server < - > interação zabbix-agent.

    
por Ali Yousefi Sabzevar 28.01.2016 / 09:51

2 respostas

2

Em vez de um alias, use um arquivo .curlrc em ~zabbix . Isso contém argumentos de linha de comando a serem adicionados ao comando curl quando for executado.

# --insecure being the more readable synonym for -k
$ echo "insecure" >> ~zabbix/.curlrc
    
por 28.01.2016 / 18:46
1

Os shells não interativos não expandem os aliases por padrão. Você precisa executar shopt -s expand_aliases explicitamente antes de definir os aliases. Esteja ciente de que ~/.bashrc geralmente é originado apenas com um shell interativo, portanto, você pode querer explicitamente obtê-lo.

Tudo isso dito, as funções são uma boa alternativa aos aliases, e não precisam de nenhuma configuração semi-obscura para funcionar. Ficaria assim:

curl() { command curl -k "$@"; }

As buscas command incorporadas $PATH para o comando, assim você não descerá pelo buraco de coelho de recursão. Você pode defini-lo em um arquivo que é originado quando o shell é inicializado.

    
por 28.01.2016 / 13:32

Tags