Allt från Computex 2023
Permalänk

screen och Irssi

Hola!

Jag irkar idag via irssi som körs i en screensession på en burk som står i serverrummet hos den lokala datorföreningen. Allting fungerar finfint, och jag har börjat vänja mig vid det till en början lite svåra gränssnittet i Irssi. Nu är det dock så att jag tycker att det är himla onödigt att först behöva koppla upp via ssh för att sen dra en "screen -r" i skalet. Det vore smidigt att göra allt detta via ett kommando, så att jag kan skapa en genväg i fönsterhanterare osv. som automatiskt drar igång IRC för mig, via screen-sessionen på servern, allt i ett svep.

Min första tanke var att det ju borde gå att åstadkomma genom att sätta skalet på burken till "screen -r", eller att lägga det i .bashrc. Problemet är ju dock att jag även använder kontot för annat, och jag genom att göra så ju skulle låsa ut mig från vanligt bruk. Vad jag nu är ute efter är istället någon variabel att skicka till sshklienten så att den efter inloggning kör ett kommando på servern. Har spanat igenom mansidan för ssh, men jag måste erkänna att de alternativer och tekniker som diskuteras där är över mitt huvud. Alltså, går det att göra som jag vill, och hur tusan gör jag det då?

W

Permalänk
Medlem

Du kan göra ett lite skript som körs vid inloggning som kollar om då är en local eller en remote inloggning och om den är remote så görs det som du tänkte att lägga till i din bashrc

Visa signatur

Plan9 fan. In glenda we trust.

Permalänk
Medlem

Prova detta när du ansluter:
ssh -t username@server screen -r

Om du ansluter från Windows med PuTTY kan du använda screen -r som remote command.

Permalänk
Medlem

För att köra kommandon med ssh specar man dem sist efter hostname bara:

ssh hostname uptime

Kommandot ersätter dock loginprogrammen, så då får du inget shell istället. En alternativ lösning skulle vara att sätta en environmentvariabel som kan plockas upp av .bash_login och kolla om den ska köra några screenkommandon. Envvariablerna tillåts dock inte som default att korsa hostar när man loggar in via ssh (pga säkerhetsrisker om man t ex sätter LD-variabler så att andra libs laddas), så det måste confas upp både på klient och serversidan. Kolla dokumentationen för SendEnv i ssh_config(5) och AcceptEnv och PermitUserEnvironment i sshd_config(5).

Jag löste ditt problem lite mer lowtech. Ett script i .bash_login frågar vid inloggning om jag vill attacha, så har jag möjligheten att säga nej:

if [ -x "$(which screen 2>/dev/null)" ]; then if [ ! -n "$(screen -ls | grep 'No Sockets')" ]; then echo -n "Attach to screen [Y/n]: " read ANSWER if [ ! "$ANSWER" = "n" ]; then screen -x >/dev/null fi fi fi

EDIT: Flaggan -t som peritus föreslår verkar ju också lösa problemet. Nu har du lite alternativ iaf.

Permalänk

Tack för all hjälp, -t-flaggan var precis vad jag var ute efter. En stor virtuell kall en åt peritus (och m0rris också för efforten )

W