Errore 127 durante l’esecuzione di comandi UNIX tramite Apple Remote Desktop

Apple Remote Desktop (ARD) permette di inviare in remoto comandi UNIX a client MacOS X. Tuttavia può capitare che dopo aver provato ad eseguire un determinato comando venga restituito come output il seguente errore:

Error 127 “bin/bash: line n:***:command not found

Dove n è il numero di linea dello script dove è presente il comando non riconosciuto e *** è il nome del comando.

In questi casi si tratta probabilmente di un problema di variabili di ambiente, frequente soprattutto quando lo script viene fatto eseguire in remoto con l’account “root”. Infatti in ARD non è possibile utilizzare direttamente il comando “sudo” per l’esecuzione con privilegi elevati, quindi è necessario riportare il solo comando e selezionare per l’esecuzione l’account di sistema “root”.

1) Prima di tutto è necessario spostarsi in un client, aprire il terminale e digitare il comando:

which nomecomando

Dopo aver confermato verrà visualizzato il percorso dove è collocato l’eseguibile.

2) A questo punto è necessario inserire il percorso nella variabile di ambiente $path del profilo remoto utilizzato da ARD. Per fare questo è sufficiente aprire il task “Send UNIX command” di ARD e aggiungere nello script, prima del comando, una riga di questo tipo:

export PATH=percorso:$path

Ad esempio se il percorso dell’eseguibile è /usr/local/bin è necessario inserire all’inizio dello script la riga:

export PATH=/usr/local/bin:$path

3) A questo punto eseguendo nuovamente il task di ARD non dovrebbe essere più presente l’errore, in quanto il profilo remoto è in grado di riconoscere il percorso dell’eseguibile.

In alcuni casi potrebbe esserci la necessità di aggiungere più percorsi (ad esempio per la corretta esecuzione del comando o per consentire l’esecuzione di più comandi all’interno dello stesso script), in tal caso utilizzare la sintassi:

export PATH=percorso1:percorso2:percorso3:$path

Teoricamente non c’è limite al numero di percorsi che è possibile aggiungere, l’importante è che siano sempre separati dal carattere “:”.

E’ tuttavia possibile che alcuni comandi vengano effettivamente riconosciuti, ma restituiscano comunque errore durante l’esecuzione sempre a causa di percorsi mancanti. Poiché la ricerca manuale dei percorsi utilizzati internamente da un determinato comando spesso è complessa, è preferibile utilizzare piuttosto un workaround.

Spostarsi in un computer client e accertarsi che il comando funzioni correttamente utilizzando direttamente il terminale. Una volta constatato ciò eseguire il comando:

env

Nell’output cercare la riga che inizia con “PATH=…….”.

Copiare tutti i percorsi presenti in questa riga (notare che sono già separati dal carattere “:”) e tornare nel task di ARD sul server.
Ad esempio:

PATH=/usr/bin:/bin:/usr/sbin:/sbin

I percorsi sono evidenziati in rosso.

Inserire prima del comando una riga “export PATH” come illustrato precedentemente inserendo tutti i percorsi annotati (vedi sintassi per percorsi multipli).

A questo punto provando ad eseguire nuovamente il comando remoto non dovrebbe venir restituito alcun errore. Ovviamente è necessario comunque verificare il corretto funzionamento del comando in quanto potrebbero esserci altre dipendenze non trattate in questo articolo.

Script di esempio che utilizza l’inserimento di tutti i percorsi locali nella variabile path per permettere l’installazione di un plugin del software “node” (notare anche l’utilizzo dell’account “root” invece del comando “sudo”):

comando_unix

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Informativa
Il sito utilizza i cookie per visualizzare annunci pubblicitari non personalizzati, analizzare il traffico e migliorare l'esperienza utente.
Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, si acconsente all’uso di tutti i cookie (anche di terze parti) e si accettano integralmente le condizioni di utilizzo.
Per maggiori informazioni o per negare il consenso a tutti o ad alcuni cookie, consultare questa pagina

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

Chiudi