ONGELMA RATKESI SAMAN TIEN. Minulla oli kirjoitusvirhe runuser-komennossa.
Jätän tämän kuitenkin tänne varoittavaksi esimerkiksi
crontab kutsuu lyhyttä scriptiä, joka ensin muokkaa hieman dataa ja paiskaa sen sitten serverille, jossa se liitetään (append) lokitiedoston loppuun.
Scripti kutsuu wiringop:n ohjelmia, jotka vaativat rootin oikeudet
Scp käyttää käyttäjätunnusta, joka on sama molemmissa koneissa.
SCP:n tunnistautumisessa käytetään public keytä.
SCP-komento toimii ilman salasanaa, jos sitä ajetaan käyttäjän oikeuksin.
Kun scriptiä ajetaan roottina, ohjelma kysyy käyttäjän salasanaa.
Scriptiä on pakko ajaa roottina, koska LCDtulosta sisältää kutsuja wiringop ohjelmiin.
Miten bash scriptin sisällä saisi tuon scp-rivin ajettua ilman salasanakyselyä ?
Tiivistelmä scriptistä:
#!/bin/bash
declare -a arr
NowC=$(date +"%H:%M")
IP=$(hostname -I)
IP=$(echo -n "${IP//[[:space:]]/}")
while true; do
IFS="," read -r osoite line < /dev/ttyACM0
if [[ $osoite == '$GPRMC' ]]; then
uline=${line%?}
set -f; IFS=','; arr=($uline)
break
fi
done
$(/home/bin/wiringop/i2cLCD/LCDtulosta clr $NowC@1,10 "LAT: ${arr[2]}"@2,1 $IP@4,1)
runuser -l -c "echo $uline | ssh luuseri@omaserveri 'cat - >> /home/luuseri/Sijainti/vaunu.txt' "
Tuo LCDtulosta on omatekemä C-kielinen ohjelma, joka tulostaa annetut merkkijonot LCD:lle annettuihin kohtiin. Ohjelma kutsuu wiringop -kirjastoja. Koneena on OrangePi Lite.