- Honor 200 Pro - mobilportré
- Poco F5 - pokolian jó ajánlat
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Magisk
- Android alkalmazások - szoftver kibeszélő topik
- Huawei Watch Fit 5 Pro - jó forma
- Xiaomi 14 - párátlanul jó lehetne
- Bemutatkozott az Oppo kamerás csúcsmodellje
- Hat év támogatást csomagolt fém házba a OnePlus Nord 4
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
CPT.Pirk
Jómunkásember
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.
-
CPT.Pirk
Jómunkásember
-
Jester01
veterán
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. -
CPT.Pirk
Jómunkásember
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. -
bambano
titán
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 bitekEzeket 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.
vannak félelmeim, hogy ezt nem shellben kellene...
-
Jester01
veterán
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 bitekEzeket 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.
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
-
CPT.Pirk
Jómunkásember
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 bitekEzeket 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.
-
bambano
titán

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

-
Jester01
veterán
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
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
doneMOD: vagy ez a borzalom

while read ip
do
eval echo '$((0x'${ip//:/)).\$((0x}'))'
done -
bambano
titán
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.
-
bambano
titán
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
-
lapa
veterán
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 szokásos örök hála. érteni nem értem, de rekonstruáltam.
-
bambano
titán
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.06vannak 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.
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/' -
lapa
veterán
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.06vannak 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.
-
lapa
veterán
#! /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.*/temperatureilletve 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
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
doneerre aszongya:
./sensor.sh: line 8: 0: No such file or directory
UPD: ahh:
while [ $most - $lejar < 0 ] --> while [ $most -le $lejar ]
-
bambano
titán
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
donesajnos 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.
#! /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.*/temperatureilletve 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
-
lapa
veterán
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
donea dátumra meg a sorokra tördeléshez esetleg sed.
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
donesajnos 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.
-
bambano
titán
ü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.
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
donea dátumra meg a sorokra tördeléshez esetleg sed.
-
lapa
veterán
ü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.
-
bambano
titán
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.logakkor nincs jobb ötletem, mint az expect, a tip, a cu és a minicom programok vagy azok forrásának olvasgatása

-
CPT.Pirk
Jómunkásember
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 -
bambano
titán
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.
oké, tehát te nem usb-t fogsz kezelni, hanem soros portot. nagyon nem mindegy.
[link] -
Jester01
veterán
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.
dc és bc "számológép" programok.
Logaritmus bc-vel például:$ echo "l(2.71)" | bc -l
.99694863489160953206Olvasá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.
-
bambano
titán
-
CPT.Pirk
Jómunkásember
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.
-
dabadab
titán
-
bambano
titán
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).
dc maga alá húzza a bc-t, akkor meg minek...
-
dabadab
titán
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.

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).
-
bambano
titán
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.

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
-
CPT.Pirk
Jómunkásember
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.

-
bambano
titán
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.
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.
-
sonar
addikt
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.
-
bambano
titán
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/'`} \; -print0de 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 -
sonar
addikt
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.
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 -
bambano
titán
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.
-
sonar
addikt
Ezzel mi lehet a gond?
find . -iname *.aod -exec cp -p "{}" /volume1/SID/0/{`sed 'y/aod/AOD/`} \; -print0 -
bambano
titán
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
-
sonar
addikt
Illetve lenne még egy kérdésem.
Nem tudjátok, hogy maximum mennyi command line argument lehet? -
sonar
addikt
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. -
Jester01
veterán
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 -
bambano
titán
-
MacCaine
őstag
-
CPT.Pirk
Jómunkásember
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 driverNekem 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
doneA 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.![;]](//cdn.rios.hu/dl/s/v1.gif)
Jelentkezem, ha végre be tudtam dugni.
-
Jester01
veterán
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.
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 driverNekem 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 -
Jester01
veterán
-
MacCaine
őstag
-
CPT.Pirk
Jómunkásember
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.
-
Jester01
veterán
É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
6zhnmju7Természetesen minden variáció kellene, magyar és angol billentyűzet-kiosztással is.
Lehetséges egyáltalán egy ilyet legenerálni scriptből?

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.
-
MacCaine
őstag
É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
6zhnmju7Természetesen minden variáció kellene, magyar és angol billentyűzet-kiosztással is.
Lehetséges egyáltalán egy ilyet legenerálni scriptből?

-
lapa
veterán
-
bambano
titán
find . -type f| while read filenev; do echo $filenev ; cat $filenev ; done >>kimenet
-
lapa
veterán
üdv. egy olyan egyszerűre lenne szükségem szöveges fájlok egybe pakolásához, mint a
cat * > kimenet
ennél annyival kéne több, hogy ki kéne írnia minden kupac elé a fájlnevet (úttal vagy anélkül). köszönöm.
-
bambano
titán
-
sh4d0w
félisten
-
bambano
titán
változó. sem web, sem ssh nem alapértelmezett. az snmp sem mindenhol, de azt be tudom indítani. nem minden hoszt pc.
-
sztikac
őstag
-
bambano
titán
-
sztikac
őstag
Az ok, de az ipsec-nek mi köze az iptables-hoz (illetve az ICMP-hez)? Vagy most valamit nagyon félreértettem a hsz-edben

@bambano: ez érdekelne, tudsz dobni linket ilyen kártyákról?
-
bambano
titán
ez nic függő, van, amelyik nic tud válaszolni rá, a többség nem.
(#839) sh4d0w: pont erről van szó, attól, hogy az interrupt rendszer egy része meg a kernel maga él, az userland lehet döglött.
azon agyalok, hogy rakok fel ospf-et mindenhova és akkor ha van route, jó, ha nincs route, nem jó.
-
sh4d0w
félisten
-
sztikac
őstag
Szerintem az OS válaszol a pingre... Ha a NIC válaszolna, akkor nem tudnád pl. iptablesból tiltani...
-
sh4d0w
félisten
Ping-re emlékeim szerint a NIC válaszol, nem az OS, így simán meglehet. Találkoztam olyan Windows-os szerverrel, amit pingelve a válasz megjött (mindegyik), noha a rendszer be volt állva, mint a szög.
-
bambano
titán
maga az eredmény kétállapotú kellene, hogy legyen, jó vagy nem jó.
de félek tőle, hogy a ping mondhat jónak akkor is valamit, amikor a magasabb szintű dolgok már összedőltek. -
Hiftu
senior tag
Ja...

Azt hittem két állapotú infó kellett.
Igy valóban gond, ha skálázni akarod az infódat a kapcsolat minősége által. -
sh4d0w
félisten
-
bambano
titán
oké, most engedd rá egy 300MHz-es procival meg pár mega rammal szerelt célgépre ugyanezt

(#832) Hiftu: milyen értéket kapsz vissza, ha mondjuk 30 pingből 28 elveszett, de kettő megjött? amikor csak kicsit rossz a kapcsolat, nem teljesen?
-
doc
nagyúr
pontosan:
ping -c 1 -w 1 127.0.0.1 && echo "vanilyen"
sot, ha egesz tartomanyt akarsz vegigpingelni:
for i in `seq 1 254`; do ping -c 1 -w 1 172.18.4.$i > /dev/null && echo "vanilyen: $i" ; done
-
Hiftu
senior tag
Hmm. A pinggel kapcsolatban a return érték is változik megvalósításonként?
Mert a man szerint, ha nem kap reply-t, akkor 1-el tér vissza.
Igy nem kell parsolni, csak a process exit code-ját megnézed. -
sh4d0w
félisten
Próbaképpen localhostra engedtem egy Xmas scant. Nyilván hardverfüggő, de nálam a kétmagos A64-en semmilyen észlelhető CPU-terhelést nem okozott, networkön szintén nem.
-
bambano
titán
ez igaz.
viszont az összes pingnek, amit eddig láttam, más a kimenete. azt parsolni...
másrészt meg az snmp magasabb rendű funkció, több mindennek kell működni, ha az válaszol.szerk: láttam már cuccot, amit egy snmpwalk hanyatlökött...

-
doc
nagyúr
-
bambano
titán
-
doc
nagyúr
-
Hiftu
senior tag
-
bambano
titán
-
doc
nagyúr
pinggel nem feltetlenul fogod eszrevenni a gepet
eleg egy sima ICMP drop rajta, es maris lathatatlan a ping szamara... -
Hiftu
senior tag
ping <host>
hogy miként paraméterezed, vagy dobod a kimenetet a /dev/null-ba, rád bizom.
Illetve a man-ból egy részlet:
"If ping does not receive any reply packets at all it will exit with code 1." -
sh4d0w
félisten
-
bambano
titán
egy szkriptben szükségem lenne annak megállapítására, hogy egy hoszt él (elérhető-e) vagy sem.
érdekelne, ti hogy csinálnátok meg? -
bambano
titán
Sziasztok! Egy shell script feladatban szeretném a segítségetek kérni:
A feladat:
Írj programot, ami argumentumban megadott számnak kiszámolja az arcus sinusat illetve arccosinusat, Taylor sorbafejtéssel Harmadik argumentumban megadható legyen a sorbafejtésnél figyelembe vett tagok száma. Ez alapértelmezettként 3. Pl.:
$>szog arcsin 0.5 5
arcsin 30 fok =Fogalmam sincs, hogy kellene megcsinálni...
Előre is köszönöm a segítséget!a gugli használata wikipedia prefixszel az arc sin taylor sora kifejezésre igen hasznos tud lenni...
ha van egy kis matematikai érzéked/rutinod, akkor nem olyan vészes a dolog, ellenkező esetben a nemesebb szerveden az öncsonkítás nem rossz alternatíva

-
Jester01
veterán
Sziasztok! Egy shell script feladatban szeretném a segítségetek kérni:
A feladat:
Írj programot, ami argumentumban megadott számnak kiszámolja az arcus sinusat illetve arccosinusat, Taylor sorbafejtéssel Harmadik argumentumban megadható legyen a sorbafejtésnél figyelembe vett tagok száma. Ez alapértelmezettként 3. Pl.:
$>szog arcsin 0.5 5
arcsin 30 fok =Fogalmam sincs, hogy kellene megcsinálni...
Előre is köszönöm a segítséget!Ez egy elég komplex feladat ha tisztán shell scriptben kell megírni. Feltehetőleg valami házifeladat és gondolom tanítottak is hozzá ezt-azt. Szóval melyik részével van konkrétan problémád?
-
md4vee
csendes tag
Sziasztok! Egy shell script feladatban szeretném a segítségetek kérni:
A feladat:
Írj programot, ami argumentumban megadott számnak kiszámolja az arcus sinusat illetve arccosinusat, Taylor sorbafejtéssel Harmadik argumentumban megadható legyen a sorbafejtésnél figyelembe vett tagok száma. Ez alapértelmezettként 3. Pl.:
$>szog arcsin 0.5 5
arcsin 30 fok =Fogalmam sincs, hogy kellene megcsinálni...
Előre is köszönöm a segítséget! -
Jester01
veterán
Sziasztok, a segítségeteket szeretném kérni, a következő feladatot kellene megoldanom:
A sh program tudjon legalább 2 típusú log fájlt elemezni és olvashatóbb formában kiírni. Kapcsolón keresztül lehessen a típusok között választani. A két típus legyen például: apache.log és egy apache error.log.
A kérdésem annyi lenne, hogy ezt a kapcsolón keresztül történő választást hogyan tudom megoldani?Simán megnézed valami string összehasonlítással az átadott argumentumok között és az alapján döntesz.
Például:case "x$1" in
x-a) do_apache "$2"
;;
x-e) do_error "$2"
;;
*) print_usage
;;
esac -
chris0123
csendes tag
Sziasztok, a segítségeteket szeretném kérni, a következő feladatot kellene megoldanom:
A sh program tudjon legalább 2 típusú log fájlt elemezni és olvashatóbb formában kiírni. Kapcsolón keresztül lehessen a típusok között választani. A két típus legyen például: apache.log és egy apache error.log.
A kérdésem annyi lenne, hogy ezt a kapcsolón keresztül történő választást hogyan tudom megoldani? -
lapa
veterán
üdv. nemtom ki ismeri az xp "offline files" rencerét, de az egyik legbrilliánsabb fícsör volt xp alatt.
ez röviden azt csinálta, hogy a hálózati meghajtóról csinált egy lokális másolatot, amit aztán intelligensen szinkronizált. a kliensen törölt dolgokat törölte a szerverről, a szerveren létrejött új dolgokat meg másolta a kliensre. a pontos módszert nem ismerem, de feltételezem volt egy fájllistája a szinkronizált állapotról, és ezt használta harmadik lábnak. egyébként nem tudta volna, hogy az a fájl, ami csak a szerveren van törlendő vagy kliensre másolandó.
oké, szóval ezt szeretném valami primitív módon implementálni valami rsync ssh felett megoldással. van tehát egy szerver fájlgyűjtemény, egy kliens kupac meg egy fájl- és könyvtárlista az előző szinkronizáláskori állapotról. az kéne történjen (próbáltam logikai sorrendben), hogy:
1. ami szerveren és listában van de kliensen nincs, azt törölje szerverről
2. ami szerveren van de listában és kliensen nincs, azt másolja kliensre
3. ami kliensen van és szerveren nincs, azt másolja szerverre
4. csináljon egy fájlt legközelebbre a végleges állapotról
namost ez nyilván annyira nem triviális, de hátha van valakinek működő részmegoldása, ami elég erőt adna nekem a befejezéshez.
-
bambano
titán
kozben magam is megtalaltam, hogy subshell-ben fut
"én a parancs || echo "xsfgkjf" && exit 1 formát próbálnám, az echo mindig igaz értékkel tér vissza."
ezzel az a gond, hogfy ha az elso ketto kozul barmelyik (akar a parancs, akar az echo) igaz ertekkel ter vissza, a harmadik (exit) resz vegrehajtodik, igy minden esetben kilep a script
a test-es megoldas jo lehetne, viszont egy ./configure, make, vagy make install ellenorzese (foleg egy file patch-elesenek sikeressege) tul sok tobbletmunkaval jarna
amit vegul talaltam es mukodik is, az az alabbi:
parancs || { echo "hiba"; exit 1; }
sajnos egy forumon leltem ra, ahol csak ennyit irtak, azt nem, hogy mi ez es miert mukodik, ha esetleg tudja valaki, szivesen meghallgatom
bash man:
{ list; } list is simply executed in the current shell environment. list must be terminated with a newline or semicolon. This is known as a group command. The return status is the exit status of list. Note that unlike the metacharacters ( and ), { and } are reserved words and must occur where a reserved word is permitted to be recognized. Since they do not cause a word break, they must be separated from list by whitespace or another shell metacharacter.
-
rt06
veterán
szerintem a zárójeles kifejezéseket subshellben hajtja végre, az lép csak ki.
én a parancs || echo "xsfgkjf" && exit 1 formát próbálnám, az echo mindig igaz értékkel tér vissza.
a manból:
"Of these list operators, && and ⎪⎪ have equal precedence, followed by ; and &, which have equal precedence."
vagy lehet még azt is, hogy:
parancs || echo bajvan
[ -f letoltottfile ] || exit 1kozben magam is megtalaltam, hogy subshell-ben fut
"én a parancs || echo "xsfgkjf" && exit 1 formát próbálnám, az echo mindig igaz értékkel tér vissza."
ezzel az a gond, hogfy ha az elso ketto kozul barmelyik (akar a parancs, akar az echo) igaz ertekkel ter vissza, a harmadik (exit) resz vegrehajtodik, igy minden esetben kilep a script
a test-es megoldas jo lehetne, viszont egy ./configure, make, vagy make install ellenorzese (foleg egy file patch-elesenek sikeressege) tul sok tobbletmunkaval jarna
amit vegul talaltam es mukodik is, az az alabbi:
parancs || { echo "hiba"; exit 1; }
sajnos egy forumon leltem ra, ahol csak ennyit irtak, azt nem, hogy mi ez es miert mukodik, ha esetleg tudja valaki, szivesen meghallgatom
-
bambano
titán
szeretnek irni egy script-et, aminek egyes lepesei kritikusak, igy ha azok nem futnak le sikeresen, ki kellene lepni
erre en az alabbi megoldast probalom:
parancs || ( echo "hiba" && exit 1 )a gondom az, hogy kiirja ugyan a hibauzenetet, viszont nem all le a script futsa, megy tovabb a kovetezo lepesre (es tobbnyire problemas kiscomagolni egy olyan file-t, melynek letoltese nem sikerult)
kerdesem az lenne, hogy mit nezek be, miert nem mukodik a kileptetesem, illetve hogy hogyan, s miert ugy kellene ehelyett csinalnom?
szerintem a zárójeles kifejezéseket subshellben hajtja végre, az lép csak ki.
én a parancs || echo "xsfgkjf" && exit 1 formát próbálnám, az echo mindig igaz értékkel tér vissza.
a manból:
"Of these list operators, && and ⎪⎪ have equal precedence, followed by ; and &, which have equal precedence."
vagy lehet még azt is, hogy:
parancs || echo bajvan
[ -f letoltottfile ] || exit 1 -
rt06
veterán
szeretnek irni egy script-et, aminek egyes lepesei kritikusak, igy ha azok nem futnak le sikeresen, ki kellene lepni
erre en az alabbi megoldast probalom:
parancs || ( echo "hiba" && exit 1 )a gondom az, hogy kiirja ugyan a hibauzenetet, viszont nem all le a script futsa, megy tovabb a kovetezo lepesre (es tobbnyire problemas kiscomagolni egy olyan file-t, melynek letoltese nem sikerult)
kerdesem az lenne, hogy mit nezek be, miert nem mukodik a kileptetesem, illetve hogy hogyan, s miert ugy kellene ehelyett csinalnom?
-
letix
senior tag
Üdv az uraknak!
Kérdésem lenne a szakikhoz.:
Adott egy általam írt kicsi bash-script, amiben egy AD felhasználó user/pass is bele van írva.
(hálózati adminisztratív megosztások felcsatolásához kell.)
Valami módon nem lehet ezt esetleg elfedni, mint pl ahogy a htdigest teszi Apache beállításakor?
Se a géphez, sem pedig a scripthez magához nem fér hozzá senki más, de attól még ez így nem szép. Ti ezt hogyan szoktátok?Automatizálva lenne a dolog, ezért lenne fontos, hogy ne kelljen mindig authentikálnom magam illetve a kódban se lehessen látni a user/pass kombót, vagy legalább a pass.-t.
Köszönöm az ötleteket.
udv
letix -
rt06
veterán
-
Jester01
veterán
-
rt06
veterán
hogyan iratok ki egy valtozot, aminek a nevenek egy reszet string-ben kapom?
pl jon a $varname valtozo, aminek a tartlam alma es en ez alapjan szeretnem kiiratni a $var_alma valtozo erteket
mindezt bash alatt
-
Jester01
veterán
Kérdeztem egy ilyet linuxban:
Nem vagyok proggoló, uh. egy alap kérdésre szeretnék választ. Shell unix
adott 2 tömb:
a:
1 2 3 4 5 6
b:
a b c d e fAmit szeretnék:
1 a
2 b
3 c
4 d
5 e
6 fAhogy próbálom:
for in in `cat a`;do for i in `cat b`;do echo $i $j;done;done
No ez nem jó

Tömb elemek lehetnek egymás alatt is. Nem tom, hogy kell tömbözni, ha van egyáltalán

Jester válaszolt is rá:
Mármint az a és a b egy-egy file?
Akkor pl.:#! /bin/bash
exec 3<a
read -u 3 -a array_a
exec 3<b
read -u 3 -a array_b
exec 3<&-
for ((i=0;i<${#array_a[*]};i+=1))
do
echo ${array_a(i)} ${array_b(i)}
done(/I)Ez így tökéletes, de rosszul fogalmaztam meg mit akarok.
Tehát:
adott a és b fájlok.a:
1 2 3 4b:
a b c d e f g h i j k l m n o pÉs kimenetnek ilyet szeretnék:
1 a
2 b
3 c
4 d
1 e
2 f
3 g
4 h
1 i
2 j
3 k
4 l
1 m
2 n
3 o
4 pEgyébként egy nagyker árlistából szeretnék adatokat kinyerni

Akkor tehát az a fájlban lévő dolgokat ismételgetni kell a b-hez?
#! /bin/bash
exec 3<a
read -u 3 -a array_a
exec 3<b
read -u 3 -a array_b
exec 3<&-
for ((i=0;i<${#array_b[*]};i+=1))
do
echo ${array_a[i % ${#array_a[*]}]} ${array_b[i]}
done -
Badb0y
addikt
Kérdeztem egy ilyet linuxban:
Nem vagyok proggoló, uh. egy alap kérdésre szeretnék választ. Shell unix
adott 2 tömb:
a:
1 2 3 4 5 6
b:
a b c d e fAmit szeretnék:
1 a
2 b
3 c
4 d
5 e
6 fAhogy próbálom:
for in in `cat a`;do for i in `cat b`;do echo $i $j;done;done
No ez nem jó

Tömb elemek lehetnek egymás alatt is. Nem tom, hogy kell tömbözni, ha van egyáltalán

Jester válaszolt is rá:
Mármint az a és a b egy-egy file?
Akkor pl.:#! /bin/bash
exec 3<a
read -u 3 -a array_a
exec 3<b
read -u 3 -a array_b
exec 3<&-
for ((i=0;i<${#array_a[*]};i+=1))
do
echo ${array_a(i)} ${array_b(i)}
done(/I)Ez így tökéletes, de rosszul fogalmaztam meg mit akarok.
Tehát:
adott a és b fájlok.a:
1 2 3 4b:
a b c d e f g h i j k l m n o pÉs kimenetnek ilyet szeretnék:
1 a
2 b
3 c
4 d
1 e
2 f
3 g
4 h
1 i
2 j
3 k
4 l
1 m
2 n
3 o
4 pEgyébként egy nagyker árlistából szeretnék adatokat kinyerni

-
doc
nagyúr
-
bambano
titán
-
Jester01
veterán
-
dabadab
titán
Új hozzászólás Aktív témák
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Tabletek, E-bookok Nyomtatók, szkennerek PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Honor 200 Pro - mobilportré
- Diablo IV
- Mibe tegyem a megtakarításaimat?
- Tőzsde és gazdaság
- LEGO klub
- Allegro vélemények - tapasztalatok
- A Linux megnégyszerezte magát a Steamen — a Microsoft ismét ígérget
- Linux kezdőknek
- Vízszűrő kancsók, szűrőbetétek, Laica, Brita, etc.-
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- További aktív témák...
- TOP Pure White PC /Ryzen 7 9800X3D, 32GB DDR5 RAM, 1TB M.2 PCIe SSD/ akciós áron eladó! BeszámítOK!
- Gamer PC-Számítógép! Csere-Beszámítás! I5 7600K / GTX 1070 8GB / 16GB DDR4 / 256 SSD + 1TB HDD
- HYTE Y70 Touch új, fóliás eladó
- AKCIÓ! 4TB Corsair MP600 Pro XT NVMe SSD meghajtó garanciával hibátlan működéssel
- Új, csak kipróbált Motorola Moto G77 8GB/256GB - 1 év garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest





![;]](http://cdn.rios.hu/dl/s/v1.gif)

)


