Ga naar inhoud

[BASH] Bereik van alias


anoniem

Aanbevolen berichten

Ik zit wat te fröbelen met een (zelfbedachte) "wrapper" rond ssh. Die "wrapper" zit (zeg) in ssh-alias. In /etc/profile.d/ssh.sh (dat vanzelf wordt "aangeroepen" door /etc/profile) heb ik gestopt:[code:1:8029d97f4c]alias ssh='ssh-alias'[/code:1:8029d97f4c]Dat werkt zoals ik gehoopt had, mits ik ssh vanaf de command line (in BASH) aanroep. Roep ik ssh namelijk aan vanaf "Run Application"(GNOME) of de MiniCli (KDE) - zeg maar: met Alt+F2 - dan wordt deze alias genegeerd. Zelfde probleem treedt op als ik (zelfs in BASH) een programma aanroep dat op zijn beurt ssh aanroept (denk: vncviewer -via ...). Klopt het dat een alias alleen werkt vanaf de command line (in BASH)? Zo ja, wat is daarvoor een workaround?
Link naar reactie
Ik weet niet of het slim is om een alias te maken voor een zo 'normale' en veelgebruikte lettercombinatie: cp, ls, vi, top, ssh zijn toch commando's waarbij je een zeker gedrag verwacht. Kan je wat je wil bereiken niet via de ssh_config file in /etc/ssh of ~/.ssh? Ik bespaar sinds kort veel typewerk door de mogelijkheden van deze file te hebben bestudeerd. Ik kan niet precies uitleggen hoe het nou zit, maar je hebt een login en een non-login shell. Voor de twee types, kun je veschillende config-files gebruiken. De ene file is ~/.bashrc en de andere ~/.bash_profile. Ik neem aan dat /etc/profile de systemwide .bash_profile is (/etc/profile wordt door meer Bourne shells gebruikt). Als ik het allemaal goed begrijp, is de profile file voor een login shell. Het opstarten van een programma in een desktop of via vnc doorloop je niet het gewone login proces en wordt de configuratie die jij hebt gemaakt niet ingelezen. Probeer eens de verschillende locaties waar je bash config kunt plegen. Log wel steeds opnieuw uit en in om er voor te zorgen dat alles goed wordt geset.
Link naar reactie
Aliases werken sowieso alleen in de shell. Dus als minicli een shell aanroept om een commando uit te voeren kun je de alias in een opstartbestand zetten dat door de shell wordt gelezen. Klein probleempje is dat een shell normaliter alleen zijn opstartbestanden (/etc/profile etc.) leest als hij interactief wordt opgestart. Dit kun je echter veranderen als je de omgevingsvariabele BASH_ENV instelt op een bestand dat je ook non-interactief geladen wilt hebben, bijvoorbeeld [b:092699160a]/etc/bashrc-non-interactive[/b:092699160a]. In dat bestand kun je functies of aliasen definiëren. Met de shell optie expand_aliases kun je regelen dat aliases ook worden geëxpandeerd in non-interactieve modus. Zie man bash. Maar het blijft zo dat als minicli enz. de shell niet gebruiken maar zelf de commandoregel parsen, dat aliases en functies dan niet werken. In dat geval kun je beter een klein scriptje ergens in je PATH neerzetten met de gewenste functionaliteit.
Link naar reactie
Dank voor alle antwoorden (dus niet alleen robian)[quote:996003c50f="robian"]Ik weet niet of het slim is om een alias te maken voor een zo 'normale' en veelgebruikte lettercombinatie: cp, ls, vi, top, ssh zijn toch commando's waarbij je een zeker gedrag verwacht. Kan je wat je wil bereiken niet via de ssh_config file in /etc/ssh of ~/.ssh? Ik bespaar sinds kort veel typewerk door de mogelijkheden van deze file te hebben bestudeerd.[/quote:996003c50f]Ik heb geprobeerd de "wrapper" transparant te houden, die "wrapper" roept als het goed is - ik ben niet zo'n script talent - uiteindelijk altijd /usr/bin/ssh aan met alle opties waarmee ssh was aangeroepen. Wat ik probeerde (en wat lijkt te zijn gelukt, zie volgende post): indien nodig ssh-add te draaien voordat ik ssh aanroep. Dan hoef ik per sessie hoogstens één keer mijn "passphrase" in te typen, en wel zonder dat ooit voor niets te doen. Het lijkt gelukt: als ik nu ssh aanroep zit mijn "identity" in elk geval in de "ssh-agent" en hoef ik nooit meer een password in te typen om in te loggen (een en ander wordt, nu ik mijn "passphrase" namelijk heb getypt, afgehandeld door ssh-agent). Ik hoop maar dat ik het wiel niet opnieuw heb uitgevonden ...
Link naar reactie
En de hoofdprijs is voor:[quote:94aad16f73="wbsoft"]In dat geval kun je beter een klein scriptje ergens in je PATH neerzetten met de gewenste functionaliteit.[/quote:94aad16f73]Inderdaad. Het is /usr/bin/ssh, maar /usr/local/bin wordt eerder genoemd in mijn $PATH. Oplossing dus: mijn "wrapper" opslaan als /usr/local/bin/ssh en alle programma's die ssh aanroepen moeten (als ik het goed zie) eerst langs mijn "wrapper". Het alias heb ik dan helemaal niet meer nodig (sterker: dat zit dan in de weg ...) Motto: fröbelen kan met GNU/Linux erg leuk zijn!
Link naar reactie
[quote:b2c2f3970d="PeBo"]En de hoofdprijs is voor:[quote:b2c2f3970d="wbsoft"]In dat geval kun je beter een klein scriptje ergens in je PATH neerzetten met de gewenste functionaliteit.[/quote:b2c2f3970d]Inderdaad. Het is /usr/bin/ssh, maar /usr/local/bin wordt eerder genoemd in mijn $PATH. Oplossing dus: mijn "wrapper" opslaan als /usr/local/bin/ssh en alle programma's die ssh aanroepen moeten (als ik het goed zie) eerst langs mijn "wrapper". Het alias heb ik dan helemaal niet meer nodig (sterker: dat zit dan in de weg ...) Motto: fröbelen kan met GNU/Linux erg leuk zijn![/quote:b2c2f3970d] je loopt zo alleen het risico dat programma's die afhankelijk zijn van ssh (of het weet-ik-waarvoor nodig hebben) f*cked up raken. More important!!! andere users die op die manier wellicht minder prettige dingen kunnen doen. (remedie: chmod 700 /usr/local/bin/ssh) een betere oplossing lijkt mij om in je homedir een directory bin aan te maken, daar al je 'personalized' scripts in zetten en die dir. voorin je PATH op te nemen
Link naar reactie
[quote:902fdd3a86="Mithrandir"]een betere oplossing lijkt mij om in je homedir een directory bin aan te maken, daar al je 'personalized' scripts in zetten en die dir. voorin je PATH op te nemen[/quote:902fdd3a86]Yep! Dat had ik ook eigenlijk willen schrijven. Ik heb zoiets in mijn /etc/profile: [code:1:902fdd3a86]if test -d "${HOME}/bin" ; then export PATH="${HOME}/bin:${PATH}" fi[/code:1:902fdd3a86]
Link naar reactie
Alweer bedankt voor de reacties, Mithrandir en wbsoft. Jullie waarschuwingen neem ik ter harte. Ik wijs evenwel op drie zaken: 1) de "wrapper" is extreem neutraal (hoop ik althans!). Wat er gebeurt, is dat ik check of het niet beter is of /usr/bin/ssh-add aangeroepen wordt voordat /usr/bin/ssh aangeroepen wordt. Beide programma's staan alle users op mijn systeem toch al ter beschikking. ssh-add wordt bovendien aangeroepen door het script en (dus?) met de bevoegdheden van de user die het script aanroept. 2) Tot nu toe heb ik in elk geval geen onverwachte dingen meegemaakt; kortom geen programma's die vreemd reageren. Maar ik zal goed opletten op onregelmatigheden. 3) Bovendien ben ik de enige gebruiker van het desbetreffende systeem: we hebben het hier over een laptop waarmee ik slechts zelf werk.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...