Terminal SSH alias tabnamen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Rebbelx
  • Registratie: April 2010
  • Laatst online: 22-09 11:06
Hoi hoi,

Ik heb in mijn .bash_profile bestand enkel aliasen staat welke een ssh verbinding opzetten naar bepaalde servers.

Syntax:
alias <<NAAM VD ALIAS>>='ssh user@server'

Dit werkt perfect, echter heb ik per dag wel meerdere tabs openstaan in terminal. Elke tab geeft wel weer op welke server ik me bevind maar het zou handiger zijn moest ik gewoon de NAAM VD ALIAS zien staan..

Ik heb al wat online gezocht en zag dat je een function kon toevoegen aan de bash_profile:
function tabname {
printf "\e]1;$1\a"
}

Als ik vervolgens manueel in terminal tabname ABC ssh user@server ingeef, veranderd de tab wel in naam ABC...Dit is wat ik ook wil...Echter wil ik gewoon de alias ingeven in terminal...Nu moet ik namelijk opnieuw het volledige ssh commando ingeven.

Ik vermoed dat er in de bash_profile gewoon iets kleins moet toegevoegd worden aan de aliasen, namelijk de naam welke ik wil in de tab...Echter vind ik niet precies hoe. Iemand die me antwoord kan dienen ?

Alvast bedankt.

Acties:
  • +2 Henk 'm!

  • Whieee
  • Registratie: Augustus 2001
  • Laatst online: 19-09 10:54

Whieee

Moderator Apple Talk

⌘ + ⌥ + ⎋

Hoi :w

ik zou persoonlijk geen shell aliases gebruiken voor SSH connecties. Je kan hiervoor gebruik maken van je ssh config file (${HOME}/.ssh/config). Bijvoorbeeld als volgt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
Host beast
Hostname beast.domain.tld
Port 2222
User whieee
IdentityFile ~/.ssh/mykey

Host foo
Hostname bar.foo.com
Port 22
User myself
IdentityFile ~/.ssh/otherkey_rsa
IdentitiesOnly yes


Vervolgens kan je het volgende toevoegen aan je .bash_profile

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
tabname() {
  printf "\e]1;$1\a"
}

tabssh() {
  local name=${1?"no name provided"}
  local ssh_args=${@:2}

  # set the tab name
  tabname ${name}

  # set up the ssh connection
  ssh ${name} ${ssh_args}

  # unset the tab name
  tabname ""
}


Nu kan ik dus connecten met de host met het alias 'beast' en de tabname goed krijgen door:

$ tabssh beast

Launching containers into space


Acties:
  • 0 Henk 'm!

  • Rebbelx
  • Registratie: April 2010
  • Laatst online: 22-09 11:06
Beste Whieee,

Dit werkt nog steeds niet. Als ik tabssh + Host ingeef, veranderd deze inderdaad de tabname...Echter op dat moment wordt er gevraagd om het passwoord in te geven van de server waarmee ik wil verbinden. Nadat ik het passwoord heb ingegeven, veranderd de tabnaam opnieuw naar een deel van de hostname. Dus in het geval dat je hierboven beschrijft, wordt de tab eerst beast en veranderd deze vervolgens naar beast.domain.tld. Ik maak echter geen gebruik van IdentityFile ~/.ssh/mykey omdat ik niet precies weet hoe ik deze optie moet gebruiken.

PS: Die scriptingtaal in die files...is dat AppleScript ?

[ Voor 5% gewijzigd door Rebbelx op 29-03-2019 08:25 ]


Acties:
  • 0 Henk 'm!

  • Whieee
  • Registratie: Augustus 2001
  • Laatst online: 19-09 10:54

Whieee

Moderator Apple Talk

⌘ + ⌥ + ⎋

Rebbelx schreef op vrijdag 29 maart 2019 @ 08:13:
Beste Whieee,

Dit werkt nog steeds niet. Als ik tabssh + Host ingeef, veranderd deze inderdaad de tabname...Echter op dat moment wordt er gevraagd om het passwoord in te geven van de server waarmee ik wil verbinden. Nadat ik het passwoord heb ingegeven, veranderd de tabnaam opnieuw naar een deel van de hostname. Dus in het geval dat je hierboven beschrijft, wordt de tab eerst beast en veranderd deze vervolgens naar beast.domain.tld. Ik maak echter geen gebruik van IdentityFile ~/.ssh/mykey omdat ik niet precies weet hoe ik deze optie moet gebruiken.

PS: Die scriptingtaal in die files...is dat AppleScript ?
Dat is wel vreemd. Ik heb geprobeerd het te reproduceren, maar kom niet tot wat je hierboven beschrijft. Wat wel gebeurt is dat in dit geval 'beast' het begin is van wat er in het tabblad staat. Het uitgevoerde commando komt daar eventueel achter, afhankelijk van welke terminal app je gebruikt. Ik zie bijvoorbeeld dat Terminal.app en iTerm2 (mijn voorkeur) ander gedrag vertonen.

De scriptingtaal is shell scripting. Als dit nieuw is voor je, kan je als startpunt eens kijken naar: https://www.tldp.org/LDP/...Bash-Beginners-Guide.html

Voor ssh verbindingen kan ik je van harte aanraden om wél gebruik te maken van key-based authenticatie. Je kan een behoorlijk complete uitleg vinden op: https://www.digitalocean....ication-on-a-linux-server

Launching containers into space


Acties:
  • 0 Henk 'm!

  • WhatsappHack
  • Registratie: Mei 2011
  • Niet online
@Whieee Snap dat het een voorbeeld is en hoef het jou wellicht niet te vertellen, maar toch een tip voor in algemene zin: zet het HostName gedeelte het liefst naar het IP-adres. Als je DNS dan om wat voor reden dan ook niet werkt en je herinnert je het IP niet, dan kan je altijd nog een verbinding leggen met de shortname. :) Je kan hem ook nog eens meerdere "Host"-namen meegeven, vooral handig als je aparte keyfiles hebt en dan reageert ie hetzelfde - hoe je ook gaat verbinden.

code:
1
2
3
4
5
Host server1 server1.domein.naam 12.34.56.78
        HostName 12.34.56.78
        Port 420
        IdentityFile ~/.ssh/keys/klant1/blijferdanookvanaf_rsa
        User staging

Zo herkent ie ook meteen welke keyfile ie moet hebben als je rechtstreeks op het IP of hostnaam verbindt.

Geen quote of mention @WhatsappHack? Dan niet raar opkijken als je geen reactie krijgt. ;)


Acties:
  • +1 Henk 'm!

  • ppl
  • Registratie: Juni 2001
  • Niet online

ppl

Dat is wel een tip met een kanttekening. Dit werkt prima wanneer je ip-adressen nooit veranderen maar wanneer dat wel zo is heb je toch echt liever hostnames (fqdn of verkort). Bovendien is in vele gevallen een DNS issue vaak dusdanig ernstig dat de aandacht eerst uitgaat naar het fixen van de DNS. Dan is de noodzaak om op basis van ip-adres te verbinden er ook niet (tenzij het hier om de DNS server zelf gaat).

Die ssh config file gebruiken is hier inderdaad een goed idee. In die config file kun je namelijk diverse ssh settings meegeven, hetzij globaal, hetzij per server, hetzij aan de servers die voldoen aan een bepaald patroon (alles beginnend met een bepaalde klantnaam).
Het enige wat hier dan nog rest is de aanpassing van de tekst die op de tabs van Terminal wordt weergegeven. Voor zover ik weet is dat vrij universeel dus je hoeft hierbij niet per se te zoeken naar iets specifieks voor Terminal of macOS. Misschien dat dit helpt bij het vinden van de oplossing.
Pagina: 1