Szkriptek: Python, Perl, Bash, ...

bash szkript: fájlból változók elérése

Sziasztok!

Kezdő vagyok még, így sokat keresgéltem a megoldás után, de nem találtam semmit.
egy txt fájlban soronként van eltárolva, hogy mit szeretnék másolni és hova.
Például:
innen1 ide1 fájl1
innen2 ide2 fájl2
innen3 ide3 fájl3
stb...
S ezt a txt fájlt szeretném egy bash scripttel feldolgozni.
Valahogy úgy képzelem el, hogy soronként kiveszi a szavakat, berakja változóba, s utána ezek segítségével meghívni az rsyncet.
De nem vagyok ebben biztos..

Tudtok segíteni, hogy milyen ciklussal kellene elérni ezeket a változókat?

Bármilyen ötletnek örülök.

Sensors kimenet darabolása (Kodi/XBMC részére) hőmérsékletek kinyerése

Sziasztok, bár megoldottam de kőbaltának érzem szóval érdekelne a legelengásabb megoldás :)

Ez az eredeti kimenet

:~$ sensors
radeon-pci-0008
Adapter: PCI adapter
temp1: +55.0°C (crit = +120.0°C, hyst = +90.0°C)

k10temp-pci-00c3
Adapter: PCI adapter
temp1: +55.4°C (high = +70.0°C)
(crit = +100.0°C, hyst = +97.0°C)

Így oldottam meg (két külön parancs, két külön helyre megy):
:~$ sensors|grep radeon-pci-0008 -A2|grep temp1|cut -d'+' -f2|cut -d' ' -f1
55.0°C
:~$ sensors|grep k10temp-pci-00c3 -A2|grep temp1|cut -d'+' -f2|cut -d' ' -f1
55.4°C

Gondolom ennél a kisiskolás megoldásnál van jobb is, tudnátok segíteni? ;)

Köszi!

Távoli publikus http könyvtár létezik-e?

Most abba futottam bele, hogy az Operás scriptem beadta a kulcsot, mivel a legújabb kiadás még nem tartalmazza a linuxos változatot. S mivel erre nem is gondoltam, a script letörölte a régit de nem tudta feltenni az újat. :( Puff neki.

Ezért úgy határoztam beleteszek egy if -d ellenőrzést de ez nem jó távoli dolgokra.
A neten eddig csak ssh-s cuccokat találtam.
Van-e linux mappa vagy nincs? Ezt mivel lehet lekérdezni?

http://get.geo.opera.com.global.prod.fastly.net/pub/opera-developer/32…

Amúgy ez egy jóval gyorsabb szerver.

segítség sed ügyben

Hello mindenki!

Sajnos nem nagyon értem még a sed logikáját, de igyekszem. Ezt pld. magam okumláltam össze.
Kérdés van-e egyszerűbb megoldás?

Leszedem a szerverről a fájllistát.

wget --no-remove-listing http://repo.vivaldi.com/archive/rpm/x86_64

Ez sajnos html fájl.
Akkor dumpoljunk.

lynx --dump index.html > list.txt

Majd keressük meg a legfrissebb verziót.

cat list.txt | sed -n '/file:/,/$/p' | sed -n '/snapshot-/,/./p' | awk -vFS='-' '{print $3}' | sort -rV | head -n1

Nekem így is megfelel, de a tanulás végett kérdés van-e egyszerűbb shell megoldás. Egyelőre a perlt még hanyagoljuk.

S ha igen, kérnék hozzá magyarázatot is hogy meg is értsem.

[MEGOLDAVA]Két string összehasonlítás

Sziasztok

Lenne egy olyan problémám, hogy két string változót szeretnék összehasonlítani bash-ban. A lényeg ha különbözik akkor teljesül az else ág.

ilyen formátumúak a stringek amit txt-ből olvasok ki: 15:15:00

ezekkel próbáltam

friss=$(cat /home/pepe/demo/frisss.txt)
friss2=$(cat /home/pepe/demo/frisss2.txt)
echo $friss
echo "$friss2"
if [$friss == $friss2]
then
echo 1
else
echo 2
fi

itt mindig ez az eredmény minden esetben

demo.sh: 31: demo.sh: [15:15:00: not found
2

if [diff $friss $friss];
then
sh proba2.sh
friss=$(cat /home/pepe/idojaras/frisss.txt)
friss2=$(cat /home/pepe/idojaras/frisss2.txt)

itt az eredmény:

demo.sh: 37: demo.sh: [diff: not found

viszont ha simán cliben futtatom és a kát fájl u.a. akkor az eredmény semmi a különbözik akkor

1c1
< 15:15:00
---
> 16:15:00

[MEGOLDVA]E-mail karakterkódolás bash

Sziasztok!

Lenne egy olyan problémám, hogy írtam egy egyszerű skriptet, de ha a kimenetét elküldetem mailben akkor nem jó a karakterkódolás, de a kimenetet fájlban is mentem ott viszont jó. Tudtok erre megoldást??

#!/bin/bash
export LANG=hu_HU.UTF-8
export LC_CTYPE="hu_HU.UTF-8"
export LC_NUMERIC="hu_HU.UTF-8"
export LC_TIME="hu_HU.UTF-8"
export LC_COLLATE="hu_HU.UTF-8"
export LC_MONETARY="hu_HU.UTF-8"
export LC_MESSAGES="hu_HU.UTF-8"
export LC_PAPER="hu_HU.UTF-8"
export LC_NAME="hu_HU.UTF-8"
export LC_ADDRESS="hu_HU.UTF-8"
export LC_TELEPHONE="hu_HU.UTF-8"
export LC_MEASUREMENT="hu_HU.UTF-8"
export LC_IDENTIFICATION="hu_HU.UTF-8"
export LC_ALL="hu_HU.UTF-8"

d=`date +'%y-%m-%d %T'`
d1=`date +'%T'`
LOGFILE="/home/user/xyz.log"

echo $d >> $LOGFILE
maga a parancs>> $LOGFILE

cat $LOGFILE | mail -s "$d1 tárgy" "valami@valami.xyz"

rm -f /home/user/xyz.log

Perl és seek

hello

adott egy kis rendszer már mint erőforrásilag és néhány nagy állományt kell feldolgozni Perl-el.
Arra nincs elég hely, hogy egyben felparsoljam az összest fájlt szóval soronként kéne feldolgozni majd a feldolgozott sorokat kiküldeni egy hállózati csatolóra.

Na a gondom az h hogyan tudok soronkét feldolgozni?

Pl.
van 3x 2G fájl. Nincs elég RAM és SWAP h fel'szürcsöljem' (hamár Perl zsargont - slurp, akarok használni). Összekell őket fésülnöm egy rendezett táblába azaz meg kell nyitnom mind a 3 fájlt egyszerre, majd 1. sor az első fájlból, 1. sor másodikból és az 1. sor a harmadikból.
Szóval valmai ilyesmi kell de ez nem hiszem h jó:

open (FILE1, $file1) or die "The $file1 can't be openned: $!\n";
open (FILE2, $file2) or die "The $file2 can't be openned: $!\n";
open (FILE3, $file3) or die "The $file3 can't be openned: $!\n";
open (MERGE, ">merge.txt") or die "The merge.txt can't be openned: $!\n";

my $line1 = < FILE1 >;
my $line2 = < FILE2 >;
my $line2 = < FILE3 >;
# a helyes format nem jeleníti meg a HUP :(
my $counter = 0;
while (defined($line1) || defined($line2)|| defined($line3)) {
if (defined($line1)) {
print MERGE $counter,"\t",$line1;
$line1 = ;
}
if (defined($line2)) {
print MERGE $counter,"\t",$line2;
$line2 = ;
}

if (defined($line3)) {
print MERGE $counter,"\t",$line3;
$line2 = ;
}
$counter++;
}

mivel itt mind a 3 fájlt egyszerre betöltené a memóriába és az megfektetné a rendszert.

Az hiszem a seek az én barátom de nem értem hogyan tudnám használni.
http://perldoc.perl.org/functions/seek.html
seek(TEST,0,1);

Amint látszik nem vagyok programozó - de dolgozom a fejlődésemen :)

[Megoldva]bash lekérdezés

Még ugyan semmi nincs belőle, de elgondolkodtam hogy kéne írnom egy kis scriptet miszerint pld. hetente megnézné van-e új kiadás az Opera-developerből, majd azt letöltené, és fel is telepítené.
Amin biztos elcsúsznék az a lekérdezés.
A feltelepített program verzió számát gondoltam összevetni hogy van-e frissebb a szerveren.
ftp://ftp.opera.com/pub/opera-developer/

Bár van dátum is. Viszont mindenhogy kérdés hogy miként szedjem le pont azt, ami kell?
Félreértés ne essék, nem komplett megoldást keresek, csak hogy hogyan hasonlítsam össze és jelöljem ki a legfrissebbet?
Amihez nem értek az a sed. Pedig ide biztos az kell.

Talán az utolsó telepítés, és az aktuális időhöz legközelebbi időpontot kell figyelembe vennem. Nem is tudom melyik lenne az egyszerűbb?

[Megoldva] string keresése {} között

Van egy szabványosnak mondható nagios config fájlom:

...
define service{
use local-service ; Name of service template to use
host_name db-vas01
service_description Swap Usage
check_command check_local_swap!20!10
}

# Define a service to check SSH on the local machine.
# Disable notifications for this service by default, as not all users may have SSH enabled.

define service{
use local-service-5 ; Name of service template to use
host_name db-vas01
service_description SSH
check_command check_ssh
notifications_enabled 0
}
...

Hogyan kapom meg az SSH service-hez tartozó host_name értékét?
Már az is elég lenne, ha megkapnám a blokkot {-tól }-ig, amiben az SSH szerepel.
Segítene valaki? Lehetőleg sed, vagy awk legyen.
Köszi

Megoldás:
root@db-vas01 ~]# awk 'BEGIN{RS="[{}]" } /SSH/ {for (i=1; i<=NF;i++) {if ($i ~ /host_name/) {print $(i+1)}}}' /opt/nagios/etc/objects/localhost.cfg
db-vas01

Köszönöm mindenkinek a segítséget.
Ha esetleg még lehet valahogy szépíteni a megoldáson, azt szívesen fogadom.

[megoldva] UTC átalakítása Perlben localtime-má

Sziasztok!

A DateTime és annak almoduljaival próbáltam a pl. a 2015-05-15 06:29:32 időbélyeget localtime-má alakítani de nem jártam sikerrel.

Természetesen úgy alakítom át a dátum+idő formátumot, ahogyan akarom.

Van ötletetek, miképpen követhetném el ezt profán módon?

Előre is köszönöm a válaszokat.