Inlägg

Inlägg som Sweedland har skrivit i forumet
Av Sweedland

Alltså, jag har ett flertal Raspberrys ute med lite olika konfigureringar för det har skett en del under ett par år. Vad jag egentligen skulle vilja göra är att scanna samtliga partitioner under /media/pi efter monteringar som innehåller foldern UPDATES. Eftersom inget annat är monterat på RPI;n (förutom några system-partitioner) samt denna uppdaterings-USB. Då borde ju en FIND finna en fungerade UPDATES ganska omgående?
Varför jag berättar detta är ju att jag går runt problem med ev. "skräp" under /media/pi med detta arb.sätt. Sen ska ju givetvis skripten vara riktigt skrivna för att undvika att det blir lämningar kvar.

Av Sweedland

Raspberry. Bash. uppdatera från USB efter omstart.

Frågan rör uppdatering av filer i en Raspberry från en USB-stickan med visst namn på foldern med uppdateringarna.
Problemet: Min ovana med bash samt att under /media/pi finns en massa rester kvar från föregående uppdateringar. Vet ej varför och hur jag får bort de som inte är aktiva. Jag gör garanterat nåt fel i det script som körs en gång vid uppstart. Misstänker detta med mount och umount...

Tar taxsamt emot hjälp.

sudo mount /dev/sda1 /media/pi if [ ! -f "/media/pi/UPDATES/updated.txt" ]; then date > /media/pi/UPDATES/updated.txt sudo cp /media/pi/UPDATES/update_script.sh /home/pi/scripts/update_script.sh sudo chmod +x /home/pi/scripts/update_script.sh sudo /home/pi/scripts/update_script.sh fi sudo umount /media/pi

edit: Raspberry gör en automount på USB-stickor om den startas om med stickan i. Ska jag testa om den är monterad redan tro?

Av Sweedland
Skrivet av protovaffe:

@Sweedland: Har du dubbelkollat att det står method="post" i form-taggen? Och vad händer om du dumpar ut POST-globalen? Alltså var_dump($_POST);

Jag kollade och NU står det POST men nu har jag uppdaterat hela koden. Det var i nåt läge jag minns att jag "missade" nåt sånt tidigare. Det kan ha varit att det saknades en POST. Jag tror inte det faktiskt eftersom FORM omslöt alla kontroller på sidan och eftersom första knapptryckn. som läste in filen fungerade men nästa klick på Spara inte fungerade.
Jag ska vid tillfälle backa bandet. Jag har revisionshantering på koden onboard.

Av Sweedland
Skrivet av protovaffe:

Eftersom datan finns i din fil hela tiden, och du endast läser ut den och presenterar den för användaren som ska kunna ändra den, så finns det ingen anledning till att använda sessioner alls.

Det borde räcka med att helt enkelt läsa ut datan från filen och presenstera den i form av input-fält eller liknande. När användaren sen väljer att spara så läser du ut värdena från input-fälten och skriver tillbaka till filen.

Det är väl här det brister för mig. När jag läste in datat från filen (efter att jag valt fil och klickat Öppna) så läste jag in filen i separata variabler typ $s1, $s2.... och sen i HTML-koden så hade jag <?php echo $s1; ?> etc. Funkade bra.
När jag sen ändrade i fälten och klickade på Spara så hade datat i $s1..$s16 försvunnit. POST[] gav nada ut. I min värld så tänkte jag att Spara kör scriptet igen och datat från föregående körning inte fanns kvar. Därför använder jag SESSION.
Här har jag nog en kunskapslucka...men så vitt jag förstår så finns ju bef. och ändrat data jag vill ha i browsern och inte i servern efter andra klicket på Spara? Jag kan få datat till servern genom en POST...
hmm....nu börjar jag förstå dig. Jag får ju datat skickat till Servern efter klicket på Spara genom POST. Varför ska datat som läses in sparas i en SESSION när det redan sparas i fältet i browsern? Jag kan inte svara på det nu. Varför krånglade det för mig?

Av Sweedland
Skrivet av lumpa:

Tydligen så har windows efter någon av de senaste uppdateringarna börjat indexera och skriver dit en indexfil. Det är därför din checksumma blir fel. Det ska gå att stänga av indexering.

1) Stängde av indexeringen av X: under win10/indexering/Exclude (SD-kortet får den enhetsbeteckn. när jag stoppar in den i Win-datorn)
2)Kopierade RPI:ns SD-kort till min windows-dator med Win32Imagewriter. (Fick en img på 7G. medvetet krympt den)
3) Sen tog jag balenaEtcher och brände över den till ett annat SD-kort.
4) Testade i RPI:n. Fungerade.

Nu vet jag att img-filen är korrekt.

Tack för tipsen om indexeringen...

Av Sweedland
Skrivet av lumpa:

Tydligen så har windows efter någon av de senaste uppdateringarna börjat indexera och skriver dit en indexfil. Det är därför din checksumma blir fel. Det ska gå att stänga av indexering.

Windows är korrupt.

Av Sweedland
Skrivet av lassesjo:

@Sweedland:

Finns några ställen man kan hitta cron-filer på:

Användarnas cron: /var/spool/cron/crontabs/<users>
Kom ihåg att editera med "crontab -e" som har en del felkontroller.

Sen finns det några till för systemet.
# ls /var/spool/cron/ /etc/cron.*
/etc/cron.d:
php

/etc/cron.daily:
apache2 apt-compat automysqlbackup bsdmainutils dlocate dpkg exim4-base logrotate man-db ntp passwd

/etc/cron.hourly:
fake-hwclock

/etc/cron.monthly:

/etc/cron.weekly:
man-db

/var/spool/cron/:
crontabs

Aaa. Jag visste inte av den där foldern under /var ! Utmärkt.

Folders under /etc är nåt cron läser av vet jag. Får ett mail från en RPI som rullar o går i verkligheten varje dag och som har nåt i daily; Den skickar:
/etc/cron.daily/logrotate:
logrotate_script: 4: logrotate_script: : not found
error: error running shared postrotate script for '/var/log/apache2/*.log '
run-parts: /etc/cron.daily/logrotate exited with return code 1

Hittar INTE var det är fel!!

BTW, kommentaren före hade en länk. Där läste jag att hela crontab kunde laddas genom att ge en fil som parameter.
crontab nytt-crontab.txt ex.vis. Vad som sker då är väl att den filen kopieras ner till $USER foldern under /var.

Av Sweedland

Raspberry PI. SD-kopia korrupt

Mål: Jag vill ha en fil (tar, zip eller img) som är kopia på RPI:ns SD-kort och som jag kan arkivera i vårt dokumenthanteringssystem och som sen kan brännas ner till nytt SD-kort för Raspberry.
Problem: Fel på img-filen gör att kopering av img till nytt SD-kort stannar.

Nu använder jag Win32Diskimager och det har funkat bra tidigare. Denna gång så är det nåt skit med img-filen. Har provat med flera SD-targets men när jag ska testa img-filen så har kopiering från img->nya SD har win32Diskimager stoppat pga CRC-fel. Orsaken till detta vet jag inte. Det kanske är fel nånstans på källan och felet reproduceras till img-filen?
Hur som helst, en rpi-clone till nytt Sd-kort direkt i RPI:n går bra. Min frågar är nu; Kan man göra en cloning av RPI:n SD-kort till en img-fil i själva RPI:n?
Typ ha ett minne istoppat i nåt av USB.kontakterna och kört nåt kopieringsprogram till en img-fil på det minnet?

Förresten, finns det nåt bra Linux-program som kan scanna Källan efter fel utan att sabba det? Möjligtvis rätta felet...har googlat och hittat en hel del men kanske ni har andra förslag.

Av Sweedland
Skrivet av TheBigOak:

Titta på den här länken.
w3schools
Länkade direkt till deras php-del.
Där hittar du nyttiga tips om både formulär, session m.m och hur du ska validera och filtera data du tar emot från formulär.

Jag använder denna site med flera andra. De är klart bra när det gäller detaljerna. Tyvärr brukar jag missa grunderna när jag ger mig in i nåt som måste fungera inom kort. Man går aldrig "Grundkurs 1". Jag fick mycket matnyttig information i denna tråd och senaste veckans jobb funkade mycket bättre.

Av Sweedland
Skrivet av krigelkorren:

Det där sade allt. Så enkelt! Egentligen handlar det om att hantera lite bash bara.

Av Sweedland

raspberry/Linux och crontab

Jag editerar vanligtvis crontab manuellt. Frågan är; det jag ser när jag kör crontab -l, var finns dessa lagrade?

Målet är att kunna skapa ett script som ställer in Raspberryn som jag vill ha den. I detta ingår även dess crontab tabell.

Av Sweedland
Skrivet av robbzor:

För att döda en sessions variabel kan du använda session_destroy() eller unset($_SESSION) dessa används ofta vid en logout funktion eller liknande.

Jag förstår fortfarande inte riktigt varför du ska använda sessioner? Du kan ju öppna filen via ett php script och använda jquery/ajax för att hämta/editera och spara filen..

SESSIONer har jag anv. mig av tidigare med lyckats resultat. Generellt, jag använder den metod jag känner till och som gör jobbet på kortaste tid och som blandar in minimalt med ny teknik. Rätt eller fel? Vet ej då jag inte har gått nån "kurs" eller "studerat på universitet" denna genre av programmering (server, php, html, browsers....). Jag försöker hålla mig till EN sak i taget och för tillfället är det PHP/HTML.
CSS hade jag gärna satt mig in i men har inte möjlighet till det nu. Dessutom lite overkill just nu då funktion, budget, lev.tid är viktigare än designen.

destroy() låter som nåt å anropa när man klickar "Huvudmeny".

Av Sweedland
Skrivet av robbzor:

Php är ett kraftfullt språk som kan användas till mycket. Många webappar bygger på php även om det kommer mer och mer nya språk och metoder att bygga applikationer.

Jag försöker tolka ditt script men blir inte så klar av vad du vill göra. När du lagrar något i en session får du med dig innehållet på alla dina sidor om du har session_start() ; överst i din kod.

Om du vid tex en inloggning sparar följande $_SESSION['user'] = "marmelad". Så kommer du på en annan sida kunna skriva echo $_SESSION['user'] ; om du har session_start() ovanför.

Hoppas detta förklarar lite mer och kan peka dig i rätt riktning? Annars får du förklara hur du tänker så blir det lättare att hjälpa

Orsaken till att jag använder php/apache2 är just det att man slipper förlita sig på nån tredjeparts app för mobiltelefoni utan istället kan använda browsern. Dessutom har jag bara ett ställe och underhålla. Intelligensen samlad på en plats om du förstår.

Angående SESSION. För mig innebär det att den lagrar variabler otroligt globalt. Scoopet när över hela siten låter det som. Du kanske måste starta om apache2 för att släppa variablerna och minnet?
Det är session_start() som möjliggör för koden att accessa variablerna.

Min app ska helt enkelt läsa in en datarad med 16 st data separerade med tab när jag trycker knappen Öppna. I samband med det ska den fylla 16 st fält.
I det läget hamnar sidan i standby s.a.s. Då kan jag ändra datat i fälten (om jag vill) och trycka Spara. Då skriver den ut data till samma fil i samma format.
Thats it.

Tacksam för input.

Av Sweedland
Skrivet av LemonIllusion:

PHP är ett anktypat språk. Det är "går det så går det" hela vägen. Du behöver aldrig berätta att något ska vara en en speciell typ på förhand. Det är först när du försöker använda ett objekt eller värde på ett sätt som det inte går att använda på som det skiter sig.

Jag har börjat förstå det. Använder mycket Echo för att testa om det funkar. Jag är imponerad av php. Kraftfullt på nåt skumt sätt.

BTW, Det var mkt bra att du förklarade det där med "går det så går det". Det ger mig en förståelse.

Skickades från m.sweclockers.com

Av Sweedland
Skrivet av LemonIllusion:

Det beror på vad du vill göra. Det är högst oklart utifrån koden eftersom du inte inkluderat den i sin helhet och du ger ingen förklaring som jag förstår heller. Duger det inte att ta bort de två raderna? Vad tycker du att de fyller för syfte?

Jag är i botten C programmerare och definierar och deklarerar variabler. Din sista fråga leder in mig på spåret att det inte behövs? Jag goolade och leddes in på det spåret att det skulle skrivas så i början men det funkar inte i den applikationen.
Jag för min del undrar ju om SESSION-variabeln fattar att den ska vara en array.
Mitt inlägg innehåller en enkel förklaring om man jag vill göra. Läsa in fil till en array. Ändra och sen spara.

Skickades från m.sweclockers.com

Av Sweedland
Skrivet av LemonIllusion:

Skriptet börjar med att omedelbart och ovillkorligt skriva över hela innehållet i $_SESSION['dta'] med en tom array. Varför gör du det om du vill ha beständig data där?

Hur gör man då för att inte den ska skrivas över mellan varje gång?

Av Sweedland

Ja. Jag insåg det när jag kom hem som jag skrev i kommentaren. Jag har tyvärr inte så stor erfarenhet än men detta gör jag inte om igen.

Skickades från m.sweclockers.com

Av Sweedland

Jag tror det har nåt med rad 2 & 3 i scriptet att göra. Andra klicket på knappen "spara" raderar arrayen. Men hur skriva?

Skickades från m.sweclockers.com

Av Sweedland

PHP-fråga om $_SESSION-funktionen

Har ett PHP script som ser ut som nedan. Den läser in en sträng med 16 st tal separerade med tab. En rad.
Mitt problem är nu att datat, som tycks bli uppdelat efter explode, inte bibehålles tills då jag ska spara datat.

Scriptets funktion: Datat från filen fyller på en tabell och sen är det meningen att jag ska kunna ändra i valfri cell och sen spara.

Har jag missuppfattat $_SESSION?

<?php session_start(); $dta=array(); $_SESSION['dta']=$dta; if(isset($_POST['Öppna'])) { ...fopen... $var=fgets($fil); $_SESSION['dta']=explode("\t", $var); ...fclose... echo $_SESSION['dta'][0].", ".$_SESSION['dta'][1]; //Kontroll av att indatat har delats upp....funkar! } else if(isset($_POST['Spara'])) { echo $_SESSION['dta'][0].", ".$_SESSION['dta'][1]; //Här finns inte datat kvar! } ?>

Av Sweedland

Det där sistnämnda var ju matnyttigt. Överhuvudtaget är högerklicka, granska, ett bra verktyg. Kan hitta en del info och dessutom tokigheter...