Bash script faalt i.c.m 'at'

Pagina: 1
Acties:

Onderwerpen


  • Casteloni
  • Registratie: November 2001
  • Laatst online: 22-08 19:43
Ik heb een simpel scriptje die er als volgt uitziet:

code:
1
2
3
4
5
#/bin/bash
echo "TEST"
echo "SHELL $SHELL"
contents=$(ssh cn44 ls)
echo "Contents $contents"


Als ik dit met de hand uitvoer krijg ik ook netjes de directory listing op de machine met hostname cn44 te zien.

Echter, als ik het scriptje draai d.m.v het command at ( dus op een later tijdstip:
code:
1
#[scastele@cn48:~/TestSetup/Scripts- 18:52:09]at -m -f ./shellTest.sh 18:53


Dan krijg ik via de mail het volgende resultaat:
code:
1
2
TEST
SHELL /bin/bash


Wat doe ik fout? Een 'lokale ls' gaat wel goed. Mist het command ssh iets aan environment variabelen oid om uitgevoerd te worden?

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Je environment is nogal beperkt meestal, bijvoorbeeld je PATH bevat een stuk minder. Probeer eens met het volledige pad naar ssh.

  • Casteloni
  • Registratie: November 2001
  • Laatst online: 22-08 19:43
blaataaps schreef op donderdag 11 februari 2010 @ 19:07:
Je environment is nogal beperkt meestal, bijvoorbeeld je PATH bevat een stuk minder. Probeer eens met het volledige pad naar ssh.
Voor de volledigheid heb ik ook maar de PATH env. variable geprint:
code:
1
PATH /usr/lib64/qt-3.3/bin:/usr/kerberos/bin:/usr/lib64/ccache:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin

Het path lijkt dus niet het probleem te zijn. SSH wordt uitgevoerd; zie hier de laatste regels:
code:
1
2
3
4
5
6
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
debug1: fd 2 clearing O_NONBLOCK
Transferred: sent 2400, received 3080 bytes, in 0.0 seconds
Bytes per second: sent 128575.8, received 165005.6
debug1: Exit status 0


Script:
code:
1
2
3
4
5
6
#/bin/bash
echo "TEST"
echo "SHELL $SHELL"
echo "PATH $PATH"
contents=$(/usr/bin/ssh -v cn44 ls)
echo "Contents $contents"


edit:ik maak nu gebruik van cron om op een bepaald tijdstip m'n script uit te voeren. Werkt prima, alleen iets omslachtiger

[ Voor 6% gewijzigd door Casteloni op 11-02-2010 22:47 . Reden: updeet ]


Acties:
  • 0 Henk 'm!

  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 08-06 08:44
'at' gebruikt altijd de bourne-shell (sh) voor het uitvoeren van commando's en dat slikt de constructie $(...) niet. Controleer je e-mail, want daar staat de output van 'at'.

Doe het als volgt:
Bash:
1
echo ~/TestSetup/Scripts/shellTest.sh | at 18:53

Vergeet niet shellTest.sh execute-mode te geven (chmod +x).

Ow. Ik zie dat je een typfout hebt gemaakt in je script shellTest.sh, waardoor ook mijn oplossing niet gaat werken...
Verander de eerste regel in shellTest.sh van
code:
1
#/bin/bash
in
code:
1
#!/bin/bash

anders is die regel gewoon een commentaarregel in plaats van de hashbang die je bedoelt.

[ Voor 31% gewijzigd door sam.vimes op 12-02-2010 08:52 . Reden: typfout in shellTest.sh ]


Acties:
  • 0 Henk 'm!

  • Big Mama
  • Registratie: Mei 2000
  • Laatst online: 08-09 20:17
sam.vimes schreef op vrijdag 12 februari 2010 @ 08:23:
'at' gebruikt altijd de bourne-shell (sh) voor het uitvoeren van commando's en dat slikt de constructie $(...) niet.
Dit geldt voor cron, niet voor at. at gebruikt je default shell (die in /etc/passwd staat). Dit kan overruled worden door de shellvariabele SHELL te zetten. Zie manpage.

Computers follow your orders, not your intentions.


Acties:
  • 0 Henk 'm!

  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 08-06 08:44
Big Mama schreef op vrijdag 19 februari 2010 @ 06:46:
[...]
Dit geldt voor cron, niet voor at. at gebruikt je default shell (die in /etc/passwd staat). Dit kan overruled worden door de shellvariabele SHELL te zetten. Zie manpage.
Dan hebben we kennelijk verschillende implementaties van at
$ echo echo hello world | at now
warning: commands will be executed using /bin/sh
job 340 at Mon Feb 22 20:17:00 2010

en de man-page vermeldt:
at and batch read commands from standard input or a specified file which are to be executed at a later time, using /bin/sh.
Debian Testing, Linux 2.6.32-trunk-686

[ Voor 0% gewijzigd door sam.vimes op 22-02-2010 20:23 . Reden: cmd pakt geen ubb-codes ]

Pagina: 1