argumentos do programa de login agetty

2

Primeiro post aqui. Estou tentando executar alguns testes em uma máquina do CentOS 6, mas meus testes desativam a rede, então eu me comunico por meio de portas seriais.

Eu criei um job upstart que configura o ttyS1 de forma que ele tenha um shell root bash nele. Eu usei:

/sbin/agetty -n -l /bin/bash ttyS1 115200 vt102

Isso é um hack, executando / bin / bash como um programa de login. Ele funciona, mas eu gostaria de passar --rcfile para /bin/bash (caso contrário, recebo alguma saída indesejável de "bash: /root/.bashrc: Permission denied", mesmo que esteja sendo executado como root).

Nota: a versão do agetty sendo usada não possui nemversion nem --login-options.

    
por Scott Crunkleton 10.11.2016 / 01:36

2 respostas

2

agetty espera que um programa seja executado para a opção -l . Você poderia fazer isso (por exemplo) um script Perl e fazer que fornecer os parâmetros, por exemplo, chamar esse script myshell

#!/usr/bin/perl
exec 'bash --rcfile myprofile'

e use o nome do caminho de myshell no comando agetty .

Eu usei Perl porque ele não lê seu perfil bash (ou sh ). Se você usar um script que execute /bin/sh , ele poderá ler o .profile do usuário (que parecia contrário à sua intenção). O recurso exec é fornecido em outras linguagens de script (incluindo sh e bash ).

    
por 10.11.2016 / 02:33
0

Você pode pensar que é um exagero, mas em vez de usar getty e executar um shell na linha serial, você pode tentar usar SLIP , Protocolo de Internet da Linha Serial. Isso transforma sua porta serial em uma interface de rede sobre a qual você pode conectar vários logins simultaneamente usando ssh ou qualquer outra coisa, enviar arquivos usando rsync e assim por diante, todos com a vantagem de confiabilidade e detecção de erros.

É simples de configurar e usar, supondo que seu kernel o suporte (geralmente o caso). A maneira mais fácil é com o comando slattach , que geralmente está no pacote net-tools . Em uma máquina, forneça os comandos

sudo slattach -p cslip -s 19200 /dev/ttyS0 &
sudo ifconfig sl0 192.168.1.2 pointopoint 192.168.1.3

em que o primeiro comando especifica a taxa de transmissão e o dispositivo serial, e o segundo fornece o endereço IP dessa máquina e da outra máquina. Na outra extremidade, forneça os mesmos comandos, trocando os dois endereços IP. Escolha um conjunto de endereços que você ainda não esteja usando.

    
por 10.11.2016 / 09:38