Determina se o processo foi iniciado via SSH

1

Estou trabalhando em um mac e meus scripts estão interagindo com o keychain (codesigning, etc ...). A partir do El Capitan, interagir com o chaveiro é muito diferente, dependendo se um processo é iniciado via SSH ou localmente. Depois que um processo foi iniciado (por exemplo, no nosso caso, o processo de longa execução é o escravo jenkins e os diversos scripts de assinatura de código são executados através de jobs jenkins no topo deste processo) existe uma maneira fácil de determinar se ele foi iniciado via SSH ou localmente?

Idealmente, algum tipo de ps -ef | etc ... digite script?

    
por FishStix 16.09.2016 / 03:08

2 respostas

1

Você pode verificar a saída de ps (ps auwx | grep java) para ver se o processo associado ao slave jenkins possui um terminal de controle. Em caso afirmativo, provavelmente foi iniciado por SSH em vez de VNC.

USER  PID  %CPU  %MEM  VSZ  RSS  TT  STAT  STARTED  TIME  COMMAND

Se a coluna TT for ??, o processo não possui um terminal de controle. Normalmente você veria algo como "s014" se fosse sobre SSH.

    
por 16.09.2016 / 20:51
0

OpenSSH sshd adiciona diversas variáveis de ambiente ao ambiente para os processos que inicia. Você pode procurar alguns dos específicos do SSH:

$ ssh localhost
Last login: Fri Sep 16 14:05:49 2016
$ set | grep SSH
SSH_CLIENT='::1 50368 22'
SSH_CONNECTION='::1 50368 ::1 22'
SSH_TTY=/dev/ttys001
$

A lista completa de variáveis e seus significados são descritos em a página man do ssh .

    
por 16.09.2016 / 20:47