Szkriptek: Python, Perl, Bash, ...

bash loop

Hogyan tudnám loopolni a szkriptet saját magát?

Adott egy kis szkript mely kidob egy számozott listát, és kéri hogy válaszunk EGY számot. Ekkor végrehajtja a feladatot, és jelenleg kilép. Ha a 0 számot választjuk (ez nem szerepel a listában), akkor is kilép.

Ezt szeretném úgy megoldani hogy ne lépjen ki a feladat elvégzése után, hanem térjen vissza a kiinduló állapotba.
Csak akkor lépjen ki, ha 0-t írnak be.

Ismerem a "for" ciklust, a "while" ciklust, de ezek mindig egy feltételhez kötik a dolgot. Itt viszont nincs feltétel.
A "0" nem jó feltétel mert hierarchikusan nem ott helyezkedik el a szkriptben.

at időzitő

Adott egy egyszerű szkript melyet megadtam az AT időzítőnek.
Ezt az egyszerű szkriptet is már egy másik szkript hozta létre.
Tehát változhatnak a mappa és fájlnevek, meg a szkriptben lévő dolgok is,

Az AT időzítőben minden helyesen meg is jelenik (sudo cat /var/spool/at/*feladat)

cd /home/user/my pathX/my dirX (MOST éppen ebben van a futtatandó szkript)
sh futtatandó szkript (szintén akad benne szóköz)
rm -f futtatandó szkript (törölje a szkriptet ha végzett)

Az AT parancs nem hajtódik végre a mappa szerkezet, és a fájlnevekben lévő szóközök miatt.

Már próbáltam az IFS=" "-t. Próbáltam az idézőjelekkel escapelni.
De míg a terminálban jó,

echo ""cd '"/home/user/my path/my dir"' ""

a szkriptben már nem, mivel az idézőjelek miatt szöveg lett a változó.
S ez az eredmény:

echo cd "${első}/${szkript}/${változója}" - Ez meg értelmetlen

Megakadtam. A létrehozó szkriptben kell finomítani a dolgokat, de még nem tudom mit.

Instagram OAuth nem fogadja el a küldött JSON adatot

Sziasztok,

Egy Flask alapú weboldalon dolgozom, ami majd a jövőben az Instagram API-n keresztül fog lekérni adatokat, ezért szükséges hogy azonosítsam a felhasználókat OAuth2 segítségével. Elvileg nem bonyolult a folyamat: https://www.instagram.com/developer/authentication/ de a harmadik lépésnél nem találom a Python megoldást.

Az ide vonatkozó kódrészletem így néz ki:


@app.route('/callback')
def callback():
    code = request.args.get('code')

    payload = {"client_id": client_id,
    "client_secret": client_secret,
    "grant_type": "authorization_code",
    "redirect_uri": redirect_uri,
    "code": code}

    r = requests.post('https://api.instagram.com/oauth/access_token', json=payload)
    return r.text

A válasz pedig ez a hibaüzenet:


{"error_type": "OAuthException", "code": 400, "error_message": "You must provide a client_id"}

A

client_id

változó fentebb definiálva van, a

code

változó is működik. Valószínűleg a

requests.post()

függvényemmel van valami gond, de nem igazán találom, hogy mi lehet az. Az is kizárt, hogy a

client_id

tartalma hibásan van megadva, mert az OAuth egy korábbi fázisában ugyanez a változó még működik.
Az instagram leírásában egy

curl -F

requestet ad meg példaként.
Azt gondolom, hogy az én

requests.post()

függvényem ezzel azonos eredményt ad, de könnyen lehet, hogy ebben tévedek.

Előre is köszönöm, ha valakinek van ötlete.

kicsit megakadtam a bash szkriptben

Kinyertem a csatorna listát az mplayer konfigból így.

mplayer_channel_list="/home/$USER/.mplayer/channels.conf.cbl"
cat ${mplayer_channel_list} | awk -vFS=":" '{printf("%03d %s\n", NR, $1 ";")}'

Ez így jó is. Viszont szeretném megjeleníteni rendezett 4 oszlopos formában.

Erre két szubrutin szolgál mely meg is jeleníti, de levágja a szöveget a szóközöknél.
Vagyis

061 Spektrum
065 Nat

a Geo HD már nem látszik.

A mezőhatároló a ; karakter mert arra még talán szükség van. S mivel ez foglalt, így nem tudok megadni neki mást.
De nem is valószínű hogy azzal meglehetne oldani.

Programozási nyelvek piaci értékének becslése, jövőbeli értéke

Kiváncsi vagyok, hogy a HUP közössége/közönsége hogy gondolkozik a programozási nyelvekrol, és azok jövőjerol, jövőbeli értékéről. Csinálok is ehhez egy (nem kőbe vésett) hozzászólás sablont, ami alapján el tudunk indulni.


Szerintem ma a munkaerőpiacon ezzel a programozási nyelvvel/technológiával/függvénykönyvtárral lehet a legtöbbet kereső állásokat megfogni: [insert]
Szerintem ma a munkaerőpiacon ebből a programozási nyelvvel/technológiával/függvénykönyvtárral kapcsolatban van a legnagyobb munkaerőhiány: [insert]
A következő nyelvek/technológiák/függvénykönyvtárak számomra nem szimpatikusak, de mégis választanám projektekhez, mert találunk hozzá munkaerőt: [insert] (...[insert], [insert]...)
A következő nyelvek/technológiák/függvénykönyvtárak számomra szimpatikusak, de mégsem választanám, mert nem találnék hozzáértő szakembert a munkaerőpiacon: [insert] (...[insert], [insert]...)

Jóslatok:
Szerintem 10 év múlva a következő nyelv/technológia/függvénykönyvtár ismerete fogja a legtöbbet érni a munkaerőpiacon: [insert]
Szerintem 10 év múlvára a következő nyelvek/technológiák/függvénykönyvtárak munkaerőpiaci értéke fog a legjelentősebb mértékben csökkenni: [insert] (...[insert], [insert]...)

[opcionális indoklások]

Vagy nyugodtan tegyetek hozzá, ahogy jónak érzitek.

Köszönöm

sed, awk - minden 2. karakter törlése, 32 karakterig

Sziasztok,

Hogy lehet megoldani, hogy egy stringból (bcrypt hash-ről van szó,), minden 2. karaktert töröljek, de csak 64 karakterig? (másképpen fogalmazva, minden 2. karaktert törölnöm kellene, egészen addig míg a törölt karaktertek száma eléri a 32-t)

input: $826y4$31226$dZbD2JfjeZ3TbIe44M0zclck2O4T1l8j7Y7jfl6maZ2ecU900ObFJk9iz8iCE5AODPQx4QkiQjJOVmG
kívánt output: $2y$12$ZDJjZTI4MzlkOTljYjlmZeU0OFJk9iz8iCE5AODPQx4QkiQjJOVmG

sed-el sikerül, de ez minden 2. karaktert töröl.
command: sed -E 's/(.)./\1/g' file.txt

Megoldható valahogy? Preferált megoldásként sed, awk használata jó lenne.

Köszönöm az ötleteket.

változó átadása tömbnévnek

Sziasztok!

Van egy mappam amiben szoveges fileok (szofajok nevei) tartalmaznak szavakat. Ezeket a szofajnevekkel ellatott tombokbe kiszervezem, majd megakarom hivni oket dinamikusan. Az a kerdesem, hogy valtozo neveket meglehet-e adni tombnevnek?

---------
A vonatkozo kodreszletek:

ftomb=($fajlok) #itt beteszek fileneveket egy tombbe
...
for ((i=0; i<${#ftomb[*]}; i++))
do
aktszofaj[i]=${ftomb[$i]}
aktszofajhossz[i]=$( cat ${ftomb[$i]} | wc -l )

for ((j=1; j<=${aktszofajhossz[$i]}; j++))
do
eval "akttombnev=${ftomb[$i]}"
eval $akttombnev[j]='$(sed -n $j"p" ${aktszofaj[i]})'
done
done

#az alabbi szofajnevvel ellatott tombokbe most megtalalhatoak a szavak (minden szo egy sor)
#pl. az echo ${igek[@]} -re helyes eredmenyt kapok

#kesobb viszont egy funkcio altal visszaadott parameterkent mar nemmukodik:

function randomszo() {

atomb=$2

echo ${igek[$((RANDOM%${#igek[@]}+1))]} #igy mukodik
echo ${atomb[$((RANDOM%${#atomb[@]}+1))]} #igy nem mukodik
echo $atomb[@] #igy sem mukodik
}

randomszo 1 igek

---------
Elnezest ha tul lamer a kerdes -.- Eval-al probalkoztam de szerintem az nem valo erre, az a sejtesem hogy itt valami szintaktikai dolog lehet a megoldas.

awk - cut username from mail addresses

Sziasztok,

Van egy mail címeket tartalmazó file.
Szeretném awk-t használva - -gsub fügvénnyel vagy regex-el - kilistázni a username-t.

email.txt sorok minta:

freeroute@gmail.com
free34te@gmail.com
freetoyota@co.uk

Elvárt output:

freeroute
free34te
freetoyota

Sed-el sikerült, awk-val nem jutok előbbre:
sed -E 's/([A-Za-z0-9]+).*/\1/' email.txt or
sed -E 's/@.*//' email.txt