Hirdetés

2012. május 27., vasárnap

Hozzászólások

(#851) lapa válasza bambano (#850) üzenetére


lapa
(PH! kedvence)

szuper, köszi.

www.lapanet.hu

(#852) MacCaine


MacCaine
(senior tag)
LOGOUT blog

Érdekes feladatba ütköztem: generálni kellene egy file-t, amiben soronként billentyűzet-szekvenciák vannak. Valami ilyesmi:

qayxsw
wsxcde
1qayxsw2
2wsxcde3
9ijnbhu8
6zhnmju7

Természetesen minden variáció kellene, magyar és angol billentyűzet-kiosztással is.

Lehetséges egyáltalán egy ilyet legenerálni scriptből? :F

Dél-pesti lakás eladó, érdeklődni privátban. Pee for Houston, pee for Austin, pee for the state my heart got lost in... And shake twice for Texas. :-DDD

(#853) Jester01 válasza MacCaine (#852) üzenetére


Jester01
(PH! addikt)

Lehetséges egyáltalán egy ilyet legenerálni scriptből?

Már miért ne lenne lehetséges. Az a kérdés, érdemes-e.

Jester

(#854) CPT.Pirk


CPT.Pirk
(PH! nagyúr)
LOGOUT blog

Olyan kérdésem van, hogyha van egy szabvány RS232 -> USB eszköz, amit felismer a kernel és látszik az lsusb -nál, akkor az eszközön beeső értékeket le lehet-e menteni egy fájlba?

Kicsit konkrétabban, egy fpga-ra van kötve egy RS232-USB modul, én kiküldök egy frekvencia és egy erősítés értéket a modulon át, ez bemegy az USB portra, onnan le kellene menteni egy fájlba, majd a következő érték párost egy új sorba, és így tovább. Végén meg tudnék belőle grafikont rajzolni pl. libreofficeban.

Efficiency and progress is ours once more, Now that we have the Neutron bomb It's nice and quick and clean and gets things done... c@ Dead Kennedys

(#855) MacCaine válasza Jester01 (#853) üzenetére


MacCaine
(senior tag)
LOGOUT blog

Miért ne lenne érdemes? :F

Dél-pesti lakás eladó, érdeklődni privátban. Pee for Houston, pee for Austin, pee for the state my heart got lost in... And shake twice for Texas. :-DDD

(#856) Jester01 válasza MacCaine (#855) üzenetére


Jester01
(PH! addikt)

Mert esetleg macerásabb mint más nyelven.

Jester

(#857) Jester01 válasza CPT.Pirk (#854) üzenetére


Jester01
(PH! addikt)

Ha nem csak lsusb-vel látszik, hanem ténylegesen soros portként is (pl. /dev/ttyUSB0), akkor igen egyszerűen el lehet ezt követni.
Syslog részlet:
kernel: usb 3-1: new full speed USB device number 29 using ohci_hcd
kernel: usb 3-1: New USB device found, idVendor=067b, idProduct=2303
kernel: usb 3-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
kernel: usbcore: registered new interface driver usbserial
kernel: USB Serial support registered for generic
kernel: usbcore: registered new interface driver usbserial_generic
kernel: usbserial: USB Serial Driver core
kernel: USB Serial support registered for pl2303
kernel: pl2303 3-1:1.0: pl2303 converter detected
kernel: usb 3-1: pl2303 converter now attached to ttyUSB0
kernel: usbcore: registered new interface driver pl2303
kernel: pl2303: Prolific PL2303 USB to serial adaptor driver

Nekem például hőmérők vannak így bekötve, az értékeket pedig egy ilyen script rész logolta:

while true
do
echo -ne "#03\r" >/dev/ttyUSB0
v=`dd if=/dev/ttyUSB0 bs=42 count=1 2>/dev/null`
d=`date --rfc-3339=seconds -u`
echo "${d:0:16}${v//+/;}" >>temp.txt
sleep 60
done

[ Szerkesztve ]

Jester

(#858) CPT.Pirk válasza Jester01 (#857) üzenetére


CPT.Pirk
(PH! nagyúr)
LOGOUT blog

A fene vigye el, most nézem, hogy nem rendes pici usb-t tettek rá, hanem ezt az új, még kisebb usb-t.
Amilyen pici a csatlakozó, még ráheftelni sem nagyon lehet másikat, vennem kell egy kábelt neki. ;]

Jelentkezem, ha végre be tudtam dugni.

[ Szerkesztve ]

Efficiency and progress is ours once more, Now that we have the Neutron bomb It's nice and quick and clean and gets things done... c@ Dead Kennedys

(#859) MacCaine válasza Jester01 (#856) üzenetére


MacCaine
(senior tag)
LOGOUT blog

Az nem baj. Viszont legalább nagyjából értem a kódot. Más nyelven még ennyit se tudok... :(

Dél-pesti lakás eladó, érdeklődni privátban. Pee for Houston, pee for Austin, pee for the state my heart got lost in... And shake twice for Texas. :-DDD

(#860) bambano válasza bambano (#828) üzenetére


bambano
(PH! nagyúr)
LOGOUT blog

ez nyerte a versenyt és jónak tűnik.
thx mindenkinek

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#861) Jester01 válasza MacCaine (#859) üzenetére


Jester01
(PH! addikt)

Először is kell egy táblázat, ami minden billentyűhöz megmondja a szomszédait. Aztán szépen rekurzívan bejárod adott hosszig, ügyelve, hogy ismétlődés ne legyen (már ha ez feltétel). Például valahogy így:

#! /bin/bash

len=3
declare -A layout
layout["a"]=qwsxz
layout["s"]=wedcxzaq
layout["d"]=erfvcxsw
layout["f"]=rtgbvcde
# ...

function process
{
local text="$1"
local options="$2"
local i
local letter
local newtext
local next

for ((i=0; i<${#options}; i+=1))
do
letter=${options:i:1}
if [ "${text/$letter/}" = "${text}" ]
then
newtext="${text}${letter}"
if [[ ${#newtext} == $len ]]
then
echo "$newtext"
else
next=${layout[$letter]}
if [[ ${#next} > 0 ]]
then
process "$newtext" "$next"
fi
fi
fi
done
}

for i in "${!layout[@]}"
do
process "" "$i"
done

Jester

(#862) sonar


sonar
(őstag)
LOGOUT blog

Sziasztok,

Segitségeteket szeretném kérni, mert még új vagyok a shell scriptelésben és elakadtam.
Olyat szeretnék, hogy ha
$1 nem "LDDS_" -el kezdődik akkor tegye automatikusan tegye elé.
Google-ztam, de nem igazán találtam használható megoldást.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember….Your life – Your choices!

(#863) sonar


sonar
(őstag)
LOGOUT blog

Illetve lenne még egy kérdésem.
Nem tudjátok, hogy maximum mennyi command line argument lehet?

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember….Your life – Your choices!

(#864) bambano válasza sonar (#863) üzenetére


bambano
(PH! nagyúr)
LOGOUT blog

ez kernel paraméter.
a parancssor teljes méretét a getconf ARG_MAX mondja meg, ebből még le kell vonni a környezet méretét (env | wc -c)

azt nem tudom, darabszám limitáció van-e, a fenti az csak méret limitáció.
ha túl sok a paraméter és attól félsz, hogy ezért kiakad, akkor xargs manual olvasgatása segít :)

[ Szerkesztve ]

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#865) sonar


sonar
(őstag)
LOGOUT blog

Ezzel mi lehet a gond?
find . -iname *.aod -exec cp -p "{}" /volume1/SID/0/{`sed 'y/aod/AOD/`} \; -print0

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember….Your life – Your choices!

(#866) bambano válasza sonar (#865) üzenetére


bambano
(PH! nagyúr)
LOGOUT blog

első ránézésre a páratlan aposztróf biztos gond, az y/aod előtti aposztrófnak nem látom a párját.

szerk:
második ránézésre a sed szabvány bemenetén várja a szerkeszteni valót, így az a sed nem tudom, honnan kapna adatot.

harmadik ránézésre a -iname *.aod-ban a *.aod-ot mindenképpen aposztrófok közé tenném, mert ha az aktuális könyvtáradban van egy aod nevű fájl, akkor a shell helyettesíteni fogja a nevét.

[ Szerkesztve ]

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#867) sonar válasza bambano (#866) üzenetére


sonar
(őstag)
LOGOUT blog

Az aposztróf valóban hiányzott, de sajnos nem müxik még igy sem.
A lényeg, hogy bizonyos kiterjesztést nagybetűsen kellene átmásolni X-ből Y-ba.
ash shell és nincsen tr parancs
Valami még mindig hibádzik
find . -maxdepth 1 -iname "*.txt" -exec cp -p {} /tmp/{`sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`} \; -print0

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember….Your life – Your choices!

(#868) bambano válasza sonar (#867) üzenetére


bambano
(PH! nagyúr)
LOGOUT blog

de azzal, hogy forkolsz egy sed-et bemenet nélkül, mi a célod?

másrészt meg a nevet aposztrófok közé kell tenni, nem idézőjelek közé, mert különben a shell kifejtheti.

szerintem valami ilyesmit kellene:
find . -name '*.aod'| sed -e 's,.*,cp & /uj/konyvtar/&,' -e 's,.aod$,.AOD,' | sh

[ Szerkesztve ]

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#869) sonar válasza bambano (#868) üzenetére


sonar
(őstag)
LOGOUT blog

Megy a find aposztróf és idézőjel nélkül is.
Amit te irtál az működik, de csak a kiterjesztést (ami jelen esetben .aod) teszi át nagybetűsre. Én azt szeretném, hogy az egész filenév nagybetűs legyen.

Amit én irtam az külön külön működik, de a bajom az amit te is irtál, hogy nincs a sednek bemenete. Csak nem tudom, hogy hogyan adjam át neki.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember….Your life – Your choices!

(#870) bambano válasza sonar (#869) üzenetére


bambano
(PH! nagyúr)
LOGOUT blog

ezt próbáld meg kipofozni:

-exec cp -p {} /tmp/$(echo {} | sed ...)

szerintem nem kell a sed köré a {}, viszont kell egy parancshelyettesítés, ami mostanában $( ) (nem aposztróf, mert az obsoloted), és úgy láttam, hogyha többször írod a {}-t, akkor a find mindegyiket helyettesíti, ezért lehet egy echo {}-val etetni a sedet.

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#871) CPT.Pirk


CPT.Pirk
(PH! nagyúr)
LOGOUT blog

Haladok a projectemmel. Olyan kérdésem lenne, hogy önmagában a bash script elég-e az alábbi feladatok elvégezésre:

- USB-ről "értékcsomagok" beolvasása, ezekben 12 bit tartalmazná az érdemi adatot, előtte lévő x (mondjuk 16) bit meg azt, hogy hányadik mérés adata érkezett meg, a megadott maximumig kellene letárolni az értékeket. Ezeket külön kellene választani mondjuk bitszám alapján. Esetleg eleve külön is elküldhetem őket, ha úgy egyszerűbb.

- A 12 bites bináris értéket át kellene alakítani decimális számmá (ezek Uki és Ube lennének), majd el kellene végezni rájuk ezt a képletet: Au = 20* log_10 (Uki / Ube).

De mindenek előtt, egyszer olyat kellene csinálnom, hogy figyelem, mi esik be USB porton. Nincs túl sok bash script tapasztalatom, szóval a fenti kérdéseket ennek megfelelően értékeljétek. :B

Efficiency and progress is ours once more, Now that we have the Neutron bomb It's nice and quick and clean and gets things done... c@ Dead Kennedys

(#872) bambano válasza CPT.Pirk (#871) üzenetére


bambano
(PH! nagyúr)
LOGOUT blog

sima usb? nem usb-s sorosport?
bash-ban nincs usb támogatás, egyébként egyszerű ellenőrizni: ldd /bin/bash és ha van benne libusb hivatkozás, akkor lehet benne, ha nincs, nincs :)

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#873) dabadab válasza CPT.Pirk (#871) üzenetére


dabadab
(MODERÁTOR)
LOGOUT blog

A /proc/bus/usb/ konyvtarban ott vannak az USB eszkozoket reprezentalo file-okat, azokat tudod bizergalni (megfelelo jogosultsaggal). Tisztan bashbol mondjuk a logaritmus nem fog menni, mar csak azert sem, mert a bash csak egesz szamokkal tud szamolni, szoval ahhoz kenytelen leszel kulso programot hivni (pl. ott a dc, a remek forditott lengyel jelolesevel).

Falsus in uno, falsus in omnibus.

(#874) bambano válasza dabadab (#873) üzenetére


bambano
(PH! nagyúr)
LOGOUT blog

dc maga alá húzza a bc-t, akkor meg minek...

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#875) dabadab válasza bambano (#874) üzenetére


dabadab
(MODERÁTOR)
LOGOUT blog

"dc maga alá húzza a bc-t"

szerk: nekem ugy tunik, hogy nem, nem is dependel ra, meg semmi, csak kozos source-uk van.

[ Szerkesztve ]

Falsus in uno, falsus in omnibus.

(#876) CPT.Pirk


CPT.Pirk
(PH! nagyúr)
LOGOUT blog

Szóval ez úgy soros port, hogy az FPGA-m felé néz 4 port, RX,TX, RTS, CTS, a kis panelon egy FT232RQ IC van, erről meg már rendes USB port jön le, az van összekötve a számítógéppel. Így néz ki egészben: [link]

Akkor a logaritmus csúszik kicsit, max összeszenvedek rá egy C programot, vagy valami.

Viszont ami fontos lenne, olyat lehet csinálni, hogy valahogy detektáljam PC-n, ha valamit elküld ez a kis modul? Bőven megfelelne, ha egy fájlba kiíródna a beesett 8 bit, vagy látnám terminálban valahogy, stb.

szerk: bc/dc -ről még nem igen halottam, a DC valami C szerű cucc a wiki szerint. C, DC, BC közül melyiket ajánljátok?

C-t ugyan tanultam kicsit, de az nem sok.

[ Szerkesztve ]

Efficiency and progress is ours once more, Now that we have the Neutron bomb It's nice and quick and clean and gets things done... c@ Dead Kennedys

(#877) bambano válasza dabadab (#875) üzenetére


bambano
(PH! nagyúr)
LOGOUT blog

akkor lehet, csak openwrt-ben dependel rá, de már jártam így, hogy dc-t akartam feltenni, mert az milyen kicsi, erre húzta magával a bc-t is...

[ Szerkesztve ]

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#878) Jester01 válasza CPT.Pirk (#876) üzenetére


Jester01
(PH! addikt)

dc és bc "számológép" programok.
Logaritmus bc-vel például:

$ echo "l(2.71)" | bc -l
.99694863489160953206

Olvasáshoz legegyszerűbb ha végtelen ciklusban simán pollozod a /dev/ttyUSB0-t és kész.

Lásd még #857, bár nekem parancsot kellett kiküldeni, illetve fix byteot olvasni.

[ Szerkesztve ]

Jester

(#879) bambano válasza CPT.Pirk (#876) üzenetére


bambano
(PH! nagyúr)
LOGOUT blog

oké, tehát te nem usb-t fogsz kezelni, hanem soros portot. nagyon nem mindegy.
[link]

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#880) CPT.Pirk válasza bambano (#879) üzenetére


CPT.Pirk
(PH! nagyúr)
LOGOUT blog

No odáig eljutottam, hogy a /dev/serial... alatt is létrejön eszköz, mikor csatlakoztatom a modult, valamint a /dev/ttyUSB0 is. Ahogy nézem, ez utóbbit szokták kezelni.

Nem igazán találtam utalást Linux alatt az "online" loggolására, csak Windowsos megoldásokat, valami ilyesmit találtam Linuxra:

exec </dev/ttyUSB0
stty igncr

while read -r; do
echo "[$(date)]: $REPLY"
done </dev/ttyUSB0 >>/usb/BigDrive/CurrentCost/CurrentCost.log

[ Szerkesztve ]

Efficiency and progress is ours once more, Now that we have the Neutron bomb It's nice and quick and clean and gets things done... c@ Dead Kennedys

(#881) bambano válasza CPT.Pirk (#880) üzenetére


bambano
(PH! nagyúr)
LOGOUT blog

akkor nincs jobb ötletem, mint az expect, a tip, a cu és a minicom programok vagy azok forrásának olvasgatása :)

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#882) lapa


lapa
(PH! kedvence)

üdv. lett hőmérőm sysfs-ben, az alábbi dolgot kéne megcsinálnom:

cat `ls -R /media/temp/10.*/temperature` >> /tmp/temp

ez kirakja a hőmérsékleteket a fájlba, de nem tudom ez a megoldás hatékony-e egyátalán. valszeg az lenne a jobb, ha felsorolnám az összes kiolvasandó filet egymás alá, vagy ilyesmi. de ezt még megoldom.

a következő bajom, hogy hogyan lesz nekem új sorom a fájlban. azt megtaláltam, hogy ez \n, de nem akart még összejönni a helyes parancs.

a harmadik meg, hogy ezt 10-20 mp-ként kéne elindítani, vagyis valami hatékony számlálás is kéne, ami nem eszi a cpu-t. legrosszabb esetben maradok a cron percnél.

ezekre kéne nekem valami frappáns. ja, meg minden sor elejére egy dátum, de az asszem $now vagy ilyesmi.

köszi az ötleteket.

www.lapanet.hu

(#883) bambano válasza lapa (#882) üzenetére


bambano
(PH! nagyúr)
LOGOUT blog

nem, nem hatékony, egy felesleges ls-t forkolsz, van benne egy felesleges processz helyettesítés.

szerintem a cat /media/temp/10.*/temperature is működne.

a 20 másodpercre azt javaslom, hogy cronból indítsd 5 percenként, és benne legyen egy ilyen ciklus:

for i in $(seq 1 15); do
cat ...
sleep 20
done

a dátumra meg a sorokra tördeléshez esetleg sed.

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#884) lapa válasza bambano (#883) üzenetére


lapa
(PH! kedvence)

köszi a segítséget, ilyet hoztam végül össze:

#!/bin/sh

lejar=`date --date='3580 second'`

for i in $(seq 1 9999999); do

if [ $(($date - $lejar)) < 0 ]; then

miko=`date +"%Y.%m.%d %H:%M:%S"`
mit=`cat /media/sensor/10.*/temperature`
echo $miko$mit >> /tmp/sensor
sleep 15

else
exit 0

fi
done

sajnos mint kiderült nem jó a tick szerinti ciklus, mert a cat... eltart jópár másodpercig (1-wire összes szenzor lekér). még nem teszteltem működik-e egyátalán.

(mindemellett ezen a ponton még ki is kéne írnia egy második fájlba az elmúlt egy órában történteket, de azt már megoldom cat -tal.)

köszi mindig.

[ Szerkesztve ]

www.lapanet.hu

(#885) bambano válasza lapa (#884) üzenetére


bambano
(PH! nagyúr)
LOGOUT blog

#! /bin/bash

for i in $(seq 1 179); do

date +"%Y.%m.%d %H:%M:%S" >> /tmp/sensor
cat /media/sensor/10.*/temperature >> /tmp/sensor &
sleep 20
done
wait
cat /tmp/sensor >>oraimentes.txt/media/sensor/10.*/temperature

illetve lehet közvetlenül abba a fájlba tenni, ami a végleges helye.
fájlnévben is működik a parancsbehelyettesítés, pl:

cat /media/sensor/10.*/temperature >>/var/log/sensorok/$(date '+%h%m')/oralog.txt

[ Szerkesztve ]

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#886) lapa válasza bambano (#885) üzenetére


lapa
(PH! kedvence)

igen, var/log/-ban van most, és nem is akkora gond, mert ssd. viszont jobban szeretném, ha a /home/ -on belül is meglenne. és akkor gondoltam inkább óránként egy spinup-spindown és közte meg mehet a /tmp/-be, ami ramdrive.

de az is lehet, hogy hagyom az ssd-re írni 20 mp-nként, aztán néha kimásolni a /home/-ba.

egy fájlban lesz, de az jó hogy írtál azért ilyen sample-t is.

mondjuk még nem teljesen világos, hogy ez miért oldja meg a késleltetést.

amúgy csináltam egy újabb rev-et, de nem műx:

#!/bin/bash

touch /tmp/sensor

most=`date +%s`
lejar=`date --date='3580 second' +%s`

while [ $most - $lejar < 0 ]
do

most=`date +%s`
miko=`date +"%Y.%m.%d %H:%M:%S"`
mit=`cat /media/sensor/10.*/temperature`
echo $miko$mit >> /tmp/sensor
sleep 15

done

erre aszongya:

./sensor.sh: line 8: 0: No such file or directory

UPD: ahh:

while [ $most - $lejar < 0 ] --> while [ $most -le $lejar ]

[ Szerkesztve ]

www.lapanet.hu

(#887) lapa


lapa
(PH! kedvence)

most már mindent összeraktam, műxik is szépen. a korábbi logot viszont konszolidálnom kell. a feladat relatíve egyszerű:

2011.03.10 16:49:16 7.25 20.94 7.94 5.94 22.06
2011.03.10 16:49:26 7.25 20.94 7.94 5.94 22.06
2011.03.10 16:49:36 7.25 20.94 7.94 5.88 22.06

vannak ilyen, szóközökkel elválasztott adataim. az első két oszlop az idő, nekem meg kéne cserélnem a negyedik és ötödik oszlopot.

azaz a fentiek ilyenné alakulnának:

2011.03.10 16:49:16 7.25 7.94 20.94 5.94 22.06
2011.03.10 16:49:26 7.25 7.94 20.94 5.94 22.06
2011.03.10 16:49:36 7.25 7.94 20.94 5.88 22.06

ígérem ez az utolsó, aztán nyugton maradok a hőmérőzésemmel egy jó darabig.

[ Szerkesztve ]

www.lapanet.hu

(#888) bambano válasza lapa (#887) üzenetére


bambano
(PH! nagyúr)
LOGOUT blog

nem írom le a megfejtést, mert sorminta lenne belőle, de kb:

sed -e 's/\([^ ]*\) ...

ez a fordított per zárójel kockazárójel kalap szóköz kockazárójel * fordítottper zárójel majd utána egy szóköz, ebből rakjál egymás után annyit, ahány oszlopod van.
majd erre a \1 \2 \3 \5 \4 formában lehet hivatkozni a sed-ben.
tehát ilyesmi:
sed -e 's/a fentiek/\1 \2 \3 \5 \4/'

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#889) lapa válasza bambano (#888) üzenetére


lapa
(PH! kedvence)

a szokásos örök hála. érteni nem értem, de rekonstruáltam.

www.lapanet.hu

(#890) bambano


bambano
(PH! nagyúr)
LOGOUT blog

itt az ideje, hogy megint tanítsatok nekem valamit:)
egy fájlban ethernet címek vannak, amit greppel válogatok. ami kijön a csőből, azt át kellene alakítani pontokkal elválasztott tizes számrendszerbeli alakra. a nyelv bash.
tehát jön egy:
00:1A:AD:7A:13:44 string az inputon, vagy ugyanez kisbetűvel, és kellene belőle egy 0.26.173.122.19.68 string.

tia

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#891) bambano válasza lapa (#889) üzenetére


bambano
(PH! nagyúr)
LOGOUT blog

az első, hogy amit zárójelek közé raksz, azt a sed egy csoportként kezeli, és \sorszám formában lehet rá hivatkozni. de mivel itt a zárójel nem szöveg, hanem vezérlőjel, ezért visszaperrel "eszképelni" kell.

a csoporton belül meg annyi van, hogy a kalap^ negál, tehát bármi, ami nem mögötte van, konkrétan most szóköz, tehát bármi, ami nem szóköz, a * miatt ebből tetszőleges mennyiség. utána berakjuk azt a mezőelválasztó szóközt, amit említettél a feladatban, majd ezt ismételjük a szükséges darabszámszor. a végén pedig \1 \2 stb. formában előszedetjük a sed-del, amit az adott csoportra rá tudott húzni.

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#892) Jester01 válasza bambano (#890) üzenetére


Jester01
(PH! addikt)

while read ip
do
while [ ${#ip} -gt 0 ]
do
echo -n $(( 0x${ip:0:2} ))
if [ ${#ip} -gt 2 ]
then
echo -n .
fi
ip=${ip:3}
done
echo
done

MOD: vagy ez a borzalom :C
while read ip
do
eval echo '$((0x'${ip//:/)).\$((0x}'))'
done

[ Szerkesztve ]

Jester

(#893) bambano válasza Jester01 (#892) üzenetére


bambano
(PH! nagyúr)
LOGOUT blog

:R :R :R :R :R

a második, az szép... ascii art kick járna érte a régi ircen:)

egyébként én is valami hasonlóra jutottam a guglizás során, hogy printf "%d.%d...." és stringműveletekkel szedem szét a mac-et, de azt nem láttam, hogy a hex-dec konverziót a shell végzi, nem a printf, ezért nem kell printf.

szép :)

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#894) CPT.Pirk


CPT.Pirk
(PH! nagyúr)
LOGOUT blog

Mi a menete egy Shell scritpben annak, hogy benyeljem az adatokat USB-s uartomról?

Windowson így megy:
Fel kell építeni a kapcsolatot (egy packet monitor programban csináltam), megadva, hogy 9600baud, 2 stop bit, nincs paritás bit. Ez után tud csak küldeni az uart modulom csomagokat a PC-re.

Valamint ilyen formában jönnek az adatok 4* 8 biten, ez 2 darab 12 bites AD kimenetéről származik:

1. 8 bit: AD1 7..0 bitek
2. 8 bit: "0000" és AD1 11..8 bitek
3. 8 bit: AD2 7..0 bitek
4. 8 bit: "0000" és AD2 11..8 bitek

Ezeket kellene az eredeti, 12 bites formában letárolnom. Az egyszerűség kedvéért kezdésnek elég az is, ha csak az AD1 2*8 bitjével foglalkozunk.

Efficiency and progress is ours once more, Now that we have the Neutron bomb It's nice and quick and clean and gets things done... c@ Dead Kennedys

(#895) Jester01 válasza CPT.Pirk (#894) üzenetére


Jester01
(PH! addikt)

A soros portod az stty-vel állíthatod be, például stty -F /dev/ttyUSB0 9600 cstopb -parenb

Hogy milyen formában szeretnéd az adatokat az nem tiszta. Tegyük fel, hogy 2 darab olvasható decimális számot szeretnél, akkor például od -An -d -N4 /dev/ttyUSB0

Jester

(#896) bambano válasza CPT.Pirk (#894) üzenetére


bambano
(PH! nagyúr)
LOGOUT blog

vannak félelmeim, hogy ezt nem shellben kellene...

a PH! kedvenc ISP-trollja (C) Tyberius | http://itcafe.hu/tema/a_nagy_openwrt_topic/friss.html

(#897) CPT.Pirk válasza Jester01 (#895) üzenetére


CPT.Pirk
(PH! nagyúr)
LOGOUT blog

stty -F /dev/ttyUSB0 9600 cstopb -parenb

Ez terminálban rootként lefut, probléma nélkül. Viszont ha megint beírom az stty parancsot, akkor meg továbbra is 38400 baud-ot ír.

Szóval nem tudom, hogy átállt-e.

od -An -d -N4 /dev/ttyUSB0
Igen, decimális számot szeretnék. Tehát össze kell pakolni 2*8 bitet egybe ahhoz, hogy a korrekt értéket lássam. Ehhez a parancshoz tudsz mutatni valami leírást? Nem nagyon találtam most hirtelen.

Efficiency and progress is ours once more, Now that we have the Neutron bomb It's nice and quick and clean and gets things done... c@ Dead Kennedys

(#898) Jester01 válasza CPT.Pirk (#897) üzenetére


Jester01
(PH! addikt)

man od

[ Szerkesztve ]

Jester

(#899) CPT.Pirk válasza Jester01 (#898) üzenetére


CPT.Pirk
(PH! nagyúr)
LOGOUT blog

Oh tényleg, nem volt telepítve nálam a man-db eddig.

Efficiency and progress is ours once more, Now that we have the Neutron bomb It's nice and quick and clean and gets things done... c@ Dead Kennedys

(#900) CPT.Pirk válasza Jester01 (#895) üzenetére


CPT.Pirk
(PH! nagyúr)
LOGOUT blog

stty -F /dev/ttyUSB0 9600 cread crtscts cs8 -cstopb -parenb Ez így már működik, ha így írom be, akkor villog az adás led, tehát a modulom és a gép között létrejött a kapcsolat. Viszont az stty szerint továbbra sem változott a baudrate, bár ha az lenne a valóság, akkor szerintem nem küldözgetne a modulom.

Csináltam egy N4 nevű fájlt, majd kiadtam az od-s parancsot:

od -An -d -N4 /dev/ttyUSB0, ami után már nem küld a modulom semmit a gépnek, a fájlba nem kerül semmi. Milyen formában kellene ezt kiadni? Ha terminálban adom ki, akkor csak kilépni lehet a terminálból.

Efficiency and progress is ours once more, Now that we have the Neutron bomb It's nice and quick and clean and gets things done... c@ Dead Kennedys

Copyright © 2000-2012 PROHARDVER Informatikai Kft.