2014-04-10 15 views
6

con ssh posso fare questo:Come posso eseguire comandi complicati per stabilire una connessione mosh?

ssh REMOTE -t 'tmux a || tmux' 

Con Mosh il meglio che posso fare è questo:

mosh REMOTE -- tmux a 

Ma questo non funzionerà:

mosh REMOTE -- tmux a || tmux 

Né fa questo : (Non importa che si tratti di singola citazione o doppia citazione, ho provato entrambi)

mosh REMOTE -- 'tmux a || tmux' 

Quindi, la mia domanda è: come faccio a fare questo lavoro?

risposta

12

Beh, sembra che devo utilizzare in modo esplicito una shell per eseguire il comando:

mosh REMOTE -- sh -c 'tmux a || tmux' 

EDIT

Invece di fare tmux a || tmux, un modo migliore è aggiungere new-session-~/.tmux.conf e basta eseguire tmux. Ciò renderebbe le cose molto più facili. Ora posso fare cose del genere:

mosh REMOTE -- tmux 

Impressionante!

+0

Penso che ciò che si desidera nella seconda soluzione sia "molto remoto - tmux a" altrimenti creerà una nuova sessione ogni volta invece di collegarsi a quella già esistente. – Mortimer

+1

puoi anche fare 'tmux new-session -A -s somenameforsession' – igor

2

Ci potrebbero essere comandi più complicati rispetto agli esempi sopra riportati. Volevo creare un comando che ricolleghi ad una sessione tmux esistente se ne esiste una ma non è già collegata, o una nuova se non ce ne sono disponibili.

Guardando this example, avrei fatto qualcosa di simile:

function tmosh() { 
    mosh $1 -- (tmux ls | grep -vq attached && tmux at -t $(tmux ls | grep -vm1 attached | cut -d: -f1)) || tmux new 
} 

Ma che non funziona, per la domanda iniziale di cui sopra.

La mia soluzione finora è quella di avere uno script wrapper sui server host:

tmux-reattach-if-exists 

che consiste semplicemente di:

(tmux ls | grep -vq attached && tmux at -t $(tmux ls | grep -vm1 attached | cut -d: -f1)) || tmux new 

poi ho usato chiamato lo script sul client da mosh come this:

function tmosh() { 
    mosh $1 -- tmux-reattach-if-exists 
} 

Se c'è una soluzione che può farlo tramite .tmux.conf direttamente che wo Sarebbe bello ma non riuscivo a capirlo.

Problemi correlati