Shortcuts voor terminal commands

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Psdmd
  • Registratie: September 2014
  • Laatst online: 19-01-2024
Ik heb een script draaien op een server, waarvan ik meerdere malen per dag de waarden in het config.ini bestand moet aanpassen en vervolgens het script herstarten. Tot vandaag heb ik dat altijd gedaan door alle commando’s manueel in terminal in te geven, maar dat begint toch wat te vervelen. 

Ik vroeg me af of het niet mogelijk is om enkele batch files / shortcuts te maken die de commando’s bevatten? 



De eerste shortcut moet een bestand op mijn server openen dat ik na bewerken kan opslaan:

ssh root@XXX.156.189.54
nano /home/USER/ccxt_notifier/config/config.ini

De tweede shortcut moet volgende 2 commando’s uitvoeren:

systemctl restart ccxt_notifier.service
systemctl status ccxt_notifier.service

Voor het eerste gedeelte heb ik in ~/.bash_profile een nieuw alias toegevoegd: alias test="ssh root@XXX.156.189.54". Dat werkte en vervolgens dacht ik het commando voor die alias aan te passen naar "nano root@XXX.156.189.54:/home/USER/ccxt_notifier/config/config.ini", maar dat werkt jammer genoeg niet.



Ook volgende commando’s werken niet, beiden loggen ze in op de server en wanneer ik die verbinding sluit kom ik terecht in een nieuw lokaal bestand geopend door nano:



ssh root@XXX.156.189.54 ; nano /home/USER/ccxt_notifier/config/config.ini
ssh root@XXX.156.189.54 && nano /home/USER/ccxt_notifier/config/config.ini

Kan iemand me vertellen hoe het wél moet? Bijkomstige vraag: is zoiets ook mogelijk vanaf een telefoon?

Beste antwoord (via Psdmd op 31-01-2019 23:29)


  • TommieW
  • Registratie: December 2010
  • Laatst online: 17:27

TommieW

Numa numa.

Is het niet handiger om automatisch die config aan te passen? Of is dat iets wat menselijk bepaald moet worden? Je kan gewoon via SSH direct een commando uitvoeren door het erachter te zetten:

ssh root@XXX.156.189.54 'vi /home/USER/ccxt_notifier/config/config.ini && systemctl restart ccxt_notifier.service && systemctl status ccxt_notifier.service'


Let hierbij erop dat ik het hele commando in quotes heb gezet. Zo wordt het in je lokale shell als één parameter gezien. Dat is het probleem met de laatste twee commando's. Zoiets zou ook prima moeten kunnen vanaf je telefoon. JuiceSSH is een hele goede Android SSH client (ik denk dat het daarbinnen in een snippet moet kunnen).

[ Voor 4% gewijzigd door TommieW op 31-01-2019 22:21 ]

1700X@3,9GHZ - Asus Crosshair VI Hero - 32GB Corsair LPX - GTX 1070Ti
iPhone 13 Pro Max - Macbook Pro 16" M1 Pro

Alle reacties


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • TommieW
  • Registratie: December 2010
  • Laatst online: 17:27

TommieW

Numa numa.

Is het niet handiger om automatisch die config aan te passen? Of is dat iets wat menselijk bepaald moet worden? Je kan gewoon via SSH direct een commando uitvoeren door het erachter te zetten:

ssh root@XXX.156.189.54 'vi /home/USER/ccxt_notifier/config/config.ini && systemctl restart ccxt_notifier.service && systemctl status ccxt_notifier.service'


Let hierbij erop dat ik het hele commando in quotes heb gezet. Zo wordt het in je lokale shell als één parameter gezien. Dat is het probleem met de laatste twee commando's. Zoiets zou ook prima moeten kunnen vanaf je telefoon. JuiceSSH is een hele goede Android SSH client (ik denk dat het daarbinnen in een snippet moet kunnen).

[ Voor 4% gewijzigd door TommieW op 31-01-2019 22:21 ]

1700X@3,9GHZ - Asus Crosshair VI Hero - 32GB Corsair LPX - GTX 1070Ti
iPhone 13 Pro Max - Macbook Pro 16" M1 Pro


Acties:
  • 0 Henk 'm!

  • HJTP
  • Registratie: Oktober 2011
  • Laatst online: 20:18
TommieW schreef op donderdag 31 januari 2019 @ 22:18:
Is het niet handiger om automatisch die config aan te passen? Of is dat iets wat menselijk bepaald moet worden? Je kan gewoon via SSH direct een commando uitvoeren door het erachter te zetten:

ssh root@XXX.156.189.54 'vi /home/USER/ccxt_notifier/config/config.ini && systemctl restart ccxt_notifier.service && systemctl status ccxt_notifier.service'


Let hierbij erop dat ik het hele commando in quotes heb gezet. Zo wordt het in je lokale shell als één parameter gezien. Dat is het probleem met de laatste twee commando's. Zoiets zou ook prima moeten kunnen vanaf je telefoon. JuiceSSH is een hele goede Android SSH client (ik denk dat het daarbinnen in een snippet moet kunnen).
Je hebt wel heel subtiel nano door vi vervangen >:)
Vind ik een goede zaak, maar TS kan daar mogelijk niet mee omgaan :)

I didn't want to believe my dad was stealing from his job as a road worker. But when I came home, all the signs were there.


Acties:
  • +1 Henk 'm!

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 20:24

Super_ik

haklust!

Waarschijnlijk ga je nu wel -t aan ssh mee moeten geven, anders heb je geen terminal.

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

SWS —> NOS, aangezien het meer over de OS commando’s gaat en niets server-specifiek.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • Psdmd
  • Registratie: September 2014
  • Laatst online: 19-01-2024
TommieW schreef op donderdag 31 januari 2019 @ 22:18:
Is het niet handiger om automatisch die config aan te passen?
Het mag zeker allemaal in 1 commando zolang systemctl restart en status gebeuren na het opslaan van config.ini, maar daar zorgt de && operator waarschijnlijk voor?
HJTP schreef op donderdag 31 januari 2019 @ 22:28:
[...]
Je hebt wel heel subtiel nano door vi vervangen >:)
Vind ik een goede zaak, maar TS kan daar mogelijk niet mee omgaan :)
Dat heb je goed geraden :) Met nano ben ik vertrouwd, vi is me onbekend. Ik krijg de config.ini wel te zien, maar kan er niets in aanpassen. Ook krijg ik eerst enkele foutmeldingen:

Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal

Vi vervangen door nano werkt jammer genoeg niet, dan krijg ik volgende foutmelding:

Error opening terminal: unknown.
Super_ik schreef op donderdag 31 januari 2019 @ 22:45:
Waarschijnlijk ga je nu wel -t aan ssh mee moeten geven, anders heb je geen terminal.
Met -t lukt het inderdaad en krijg ik nano geopend _/-\o_

[ Voor 25% gewijzigd door Psdmd op 31-01-2019 23:08 . Reden: Nieuwe antwoorden tijdens het plaatsen van mijn laatste bericht ]


Acties:
  • +3 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:21

Hero of Time

Moderator LNX

There is only one Legend

Als je weet wat de waarde is en waar die heen moet, is het simpel te doen met sed, die heeft geen terminal nodig.

Wat ook nog kan, als alles makkelijk te automatiseren is, is een script uitvoeren bij inloggen en als die klaar is, je weer wordt afgemeld. Dat kan met ssh_command icm ssh keypair inloggen (public/private key). Maar dat gaat je denk ik nog even te ver.

Voor sed is het zoiets simpels als dit:
sed -i 's/oude waarde/nieuwe waarde/'

Dit doet een in-place vervanging van 'oude waarde' naar 'nieuwe waarde' en stop als het de eerste heeft gedaan. Heb je er meer, dan moet er nog 'g' aan het einde, voor de single quote. Het is ook mogelijk om een vast stukje tekst op te geven dat aan het begin van de regel moet staat om de hele regel te vervangen, ongeacht wat erachter staat, maar die weet ik niet uit m'n hoofd.

Er is iig een hele hoop mogelijk om zaken te automatiseren.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Psdmd
  • Registratie: September 2014
  • Laatst online: 19-01-2024
Het script is een tool dat me helpt om cryptocurrencies te traden, ik kan er bijvoorbeeld mijn buy & sell orders op ingeven en dan krijg ik een push melding op m'n telefoon wanneer die gevuld worden. Een beetje zoals Blockfolio doet, maar veel preciezer dan.

Zoals @TommieW al aangaf moeten deze waardes menselijk bepaald worden en kan ik dit niet verder automatiseren. Tenzij met een volledig geautomatiseerde trading bot, maar dat is een ander verhaal en bovendien zijn de meningen daarover erg verdeeld.

Nu inloggen en de config aanpassen een pak minder omslachtig geworden is ben ik al goed geholpen! Voorheen was het steeds commando's kopiëren en plakken uit een tekstbestand of in terminal pijltje omhoog duwen om het juiste commando te zoeken 8)7

[ Voor 19% gewijzigd door Psdmd op 01-02-2019 16:16 ]


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:21

Hero of Time

Moderator LNX

There is only one Legend

Ik doelde meer dat je een script aanroept met een parameter (nieuwe waarde) die dan alles voor je doet. Dus inloggen op de server, ini aanpast en service herstart. Nu moet je alsnog wat handmatig doen (editen en opslaan).

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Psdmd
  • Registratie: September 2014
  • Laatst online: 19-01-2024
Ik denk niet dat ik je helemaal begrijp, maar ik ben dan ook een hele grote noob in dit soort dingen :) Als het natuurlijk nog korter kan hoor ik het graag!

Momenteel open ik dus terminal en geef daar mijn shortcut in, in dit geval trx

Afbeeldingslocatie: https://i.imgur.com/9oy11SH.png

Dat brengt me meteen in de config.ini waar ik de nieuwe waarden ingeef en afsluit met control+X, gevolgd door Y en enter

Afbeeldingslocatie: https://i.imgur.com/A23LQ5q.png

Daarna kom ik bij de status terecht en als ik daar geen foutmeldingen zie kan ik met een gerust hart het venster sluiten

Afbeeldingslocatie: https://i.imgur.com/txR9Q4N.png

Bedoel je met een script bijvoorbeeld een bestandje op m'n desktop waar ik de nieuwe waarden kan invullen zonder dat ik nog in terminal moet zijn?

Acties:
  • +1 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:21

Hero of Time

Moderator LNX

There is only one Legend

Eerder dat je een terminal opent, 'trx <nieuwe waarde>' intypt en de rest voor je wordt gedaan. Dus je hoeft niet met de hand het bestand aan te passen en op te slaan. Dat wordt door 'sed' dan gedaan.

Het is overigens zeer onverstandig om je key en secret zo in een plaatje te laten staan. Nu kan iedereen je wallet in, of waar het dan ook toegang toe geeft.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Psdmd
  • Registratie: September 2014
  • Laatst online: 19-01-2024
Met die informatie kunnen ze me hoogstens een push melding sturen, benieuwd of iemand die moeite doet :+

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:21

Hero of Time

Moderator LNX

There is only one Legend

Toch, voor de zekerheid... maar dat zal waarschijnlijk al te laat zijn. Dingen gaan snel op 't web.

Commandline FTW | Tweakt met mate

Pagina: 1