Komentorivikäyttö

Komentorivikäyttöä varten tarvitaan konfiguraatiotiedosto ja komentorivityökalut eli niin kutsutut "i-komennot" (iRODS ohjelmiston komentorivityökalut).

 

Konfiguraatiotiedosto
Konfiguraatiotiedosto tulee luoda käyttäjän kotihakemistoon (/home/<tunnus>/.irods/irods_environment.json) ja tiedoston sisällön tulee olla seuraavanlainen:

{

    "irods_home": "/ida/<organisaatio>/<projekti>",
    "irods_user_name": "<käyttäjätunnus>",
    "irods_host": "ida.csc.fi",
    "irods_zone_name": "ida",
    "irods_port": 1247,
    "irods_authentication_scheme": "native"

}

Huom. kenttä irods_zone on versiosta 4.1.0 eteenpäin irods_zone_name. Mikäli kone jolta käytät komentorivikomentoja on Taito, tulee sinun käyttää vanhaa irods_zone kenttää.

Ylläolevista riveistä käyttäjä vaihtaa <organisaatio>, <projekti> ja <käyttäjätunnus> kohdat hänelle ilmoitettuihin tietoihin. Nämä tiedot  lähetetään käyttäjille sähköpostitse otsikkona "Welcome IDA user - Tervetuloa IDAn käyttäjäksi" palvelun käyttöehtojen hyväksymisen jälkeen.

Komentorivikomennot

Asennus
Komentorivityökalut ovat saatavilla irods.org/download -sivulta kohdan "iCommands CLI" alta. Asennusohjeet RHEL ja Debian/Ubuntu Linux distribuutioille löytyvät samalta sivulta.

 

Komentorivikomentojen käyttäminen
Huom! Jokaisesta IDA:n komentorivikomennosta saa pienen ohjeen ja kaikki komennon tukemat lisäoptiot näkyviin suorittamalla komennon optiolla '-h'. Esimerkiksi:

$ iput -h

 

 

Hyödyllisiä komentoja

Huom: Suosittelemme että vältätte 'irsync' komennon käyttämistä siirtoihin. Kyseisen komennon avulla tehdyt siirrot ovat ongelmallisia. Suosittelemme isoihin tiedostonsiirtoihin erillistä siirtoskriptiä, johon löytyy linkki alempana.
iinit Yhteyden avaaminen. Komento kysyy IDA-salasanan kertaluontoisesti, mikäli sitä ei ei ole tallennettuna ~/.irods/.irodsA -tiedostoon.
iexit Yhteyden lopettaminen. Säilyttää heikosti salatun salasanan tiedostossa ~/.irods/.irodsA
iexit full Yhteyden lopettaminen. Poistaa heikosti tallennetun salasanan. Tällöin 'iinit' kysyy salasanan uudelleen ensi kerralla.
ipwd Näyttää nykyisen käyttäjän sen hetkisen IDA-hakemiston.
ils Hakemiston listaaminen.
icd Hakemiston vaihtaminen.
imkdir Hakemiston luominen.
irm Tiedoston tai kansion poistaminen.
icp Tiedoston tai kansion kopioiminen IDA:an sisällä.
iput Tiedoston tai kansion siirtäminen IDA:aan.
iget Tiedoston tai kansion noutaminen IDA:sta.
imeta Metatiedon listaaminen/lisääminen/poistaminen/muuttaminen yksittäiselle tiedostolle tai kansiolle.
ichmod Tiedoston tai kansion pääsyoikeuksien muuttaminen.<.
iquest Erittäin monipuolinen työkalu tietokantakyselyjen tekemiseksi IDA:aan.
 

Isot tiedostonsiirrot

Tehdessä isoja siirtoja (paljon tiedostoja, lukuisia kansioita, yms.) IDA:aan suosittelemme avuksi siirtoskriptiä: https://github.com/ida-csc/iput_wrapper. Muita hyödyllisiä skriptejä: https://github.com/ida-csc

Tyypillisiä käyttötilanteita:
(Huom. seuraavat käyttötilanteet olettavat että komentorivikomennot ovat asennettuna)

Konfiguraatiotiedoston luominen (tämä tarvitsee tehdä vain kerran):

Oletetaan että käyttäjällä 'exampleuser' on koneellansa kotihakemisto polussa /home/exampleuser (kotihakemiston polku voidaan ilmoittaa myös lyhennetyssä muodossa ~/):

$ pwd
/home/exampleuser

Käyttäjä luo kotihakemistoonsa polun /home/exampleuser/.irods (tai lyhennetyssä muodossa ~/.irods):

$ mkdir /home/exampleuser/.irods

TAI

$ mkdir ~/.irods

Käyttäjä luo konfiguraatiotiedoston haluamallaan tekstieditorilla:

$ nano ~/.irods/irods_environment.json

Kyseiseen konfiguraatiotiedostoon käyttäjä kirjoittaa (tai kopioi seuraavat rivit):

{
    "irods_home": "/ida/<organisaatio>/<projekti>",
    "irods_user_name": "<käyttäjätunnus>",
    "irods_host": "ida.csc.fi",
    "irods_zone_name": "ida",
    "irods_port": 1247,
    "irods_authentication_scheme": "native"

}

Ylläolevista riveistä käyttäjä vaihtaa <organisaatio>, <projekti> ja <käyttäjätunnus> kohdat hänelle IDA-tunnusten luonnin yhteydessä ilmoitettuihin tietoihin.

Huom. kenttä irods_zone on versiosta 4.1.0 eteenpäin irods_zone_name

Yhteyden ottaminen IDA:aan:

Käyttäjä ottaa yhteyden seuraavalla komennolla:

$ iinit
Enter your current iRODS password:
$

Komento kysyy ensimmäistä kertaa yhteyttä ottaessa IDA-salasanaa, jonka antamisen jälkeen salasana tallentuu heikosti kryptattuna tiedostoon ~/.irods/.irodsA

Yhteyden sulkeminen IDA:aan:

$ iexit
$

Halutessaan käyttäjä voi käskeä komentoa myös poistamaan 'iinit'-komennon luoman heikosti kryptatun salasanan:

$ iexit -h
Exits iRODS session (cwd) and optionally removes
the scrambled password file produced by iinit.
Usage: iexit [-vh] [full]
If 'full' is included the scrambled password is also removed.
-v verbose
-V very verbose
-h this help
$ iexit full

Ylläolevassa esimerkissä käyttäjä käytti '-h' optiota 'iexit' -komennolle nähdäkseen sen tarjoamat optiot ja antoi tämän jälkeen komennolle 'full' option.

Seuraava yhdistelmäesimerkki esittelee käytännön tilanteen, jossa käyttäjä ottaa yhteyden IDA:aan ja tekee monia toimenpiteitä:

$ iinit
Enter your current iRODS password:
$ ipwd
/ida/exampleorganisation/exampleproject

Käyttäjällä on kotihakemistossaan yksi tiedosto ja yksi kansio:

$ ils
/ida/exampleorganisation/exampleproject:
  test_file.dat
  C- /ida/exampleorganisation/exampleproject/published
$

Käyttäjä luo toisen kansion nimeltä 'datasets':

$ imkdir datasets
$ ils
/ida/exampleorganisation/exampleproject:
  test_file.dat
  C- /ida/exampleorganisation/exampleproject/datasets
  C- /ida/exampleorganisation/exampleproject/published
$ icd datasets
$ ils
/ida/exampleorganisation/exampleproject/datasets:
$

Käyttäjällä on omalla koneellaan tiedosto 'example_local_file.dat', jonka käyttäjä siirtää 'datasets' kansioon:

$ ls example_local_file.dat
example_local_file.dat
$ iput example_local_file.dat
$ ils
/ida/exampleorganisation/exampleproject/datasets:
  example_local_file.dat

Käyttäjä siirtyy hakemistossapuussa taaksepäin yhden kansion verran ja tuhoaa 'datasets' kansion sisältöineen:

$ icd ..
$ ipwd
/ida/exampleorganisation/exampleproject
$ irm -rf /ida/exampleorganisation/exampleproject/datasets
$ ils
  test_file.dat
  C- /ida/exampleorganisation/exampleproject/datasets
  C- /ida/exampleorganisation/exampleproject/published

 

(Huom. käyttäjä voi koska tahansa antaa komennon '-h' optiolla saadakseen sen käytöstä ohjeita, esim. 'irm -h')

Käyttäjä noutaa omalle koneelleen test_file.dat tiedoston ja sulkee yhteyden IDA:aan:

$ iget test_file.dat
$ ls test_file.dat
test_file.dat
$ iexit

 

Metatiedon käsittely
Metatiedon käsittelyt tehdään seuraavilla komennoilla:

imeta ls -d <tiedostopolku> Näyttää kaikki tiedoston metadatat
imeta ls -C <hakemistopolku> Näyttää kaikki hakemiston metadatat/td>
imeta add -d <tiedostopolku> "Lopputulos" "42" Lisää tiedostolle metadatakentän 'Lopputulos', jonka arvo on '42'
imeta rm -d <tiedostopolku> "Lopputulos" "42" Poistaa tiedostolta metadatakentän 'Lopputulos', jonka arvo on '42'.
imeta rm -C <hakemistopolku> "Lopputulos" "42" Poistaa hakemistolta metadatakentän 'Lopputulos', jonka arvo on '42'.
imeta rmw -d <tiedostopolku> "Lopputulos" % % Poistaa tiedostolta kaikki metadatakentät, joiden nimi on 'Lopputulos'
imeta rmw -C <hakemistopolku> "Lopputulos" % % Poistaa hakemistolta kaikki metadatakentät, joiden nimi on 'Lopputulos'

 

 

Yleisesti ottaen 'imeta' -komennon formaatti on 'imeta <komento> <kohdetyyppi> <kohde> <kenttä> <arvo> <yksikkö>'. Lisäohjeita ja optioita saa komennolla 'imeta -h'.

IDAssa käytettävä merkistö on UTF-8. Tämä tarkoittaa mm. että Latin-1 skandimerkkejä ei voi tallentaa IDA-tiedostojen metadataan imeta-komennolla.

Mikäli metadatakentissä tai niiden arvoissa on tarkoitus käyttää välilyöntejä, tulee kyseiset kentät tai arvot ympäröidä "-merkeillä. Esim. "Laskennan lopputulos".

 

Tiedosto- ja hakemisto-oikeuksien käsittely
Tiedosto- ja hakemisto-oikeuksia käsitellään seuraavilla komennoilla:

ichmod null <käyttäjä> <polku> Poistaa käyttäjän oikeudet tiedostosta/hakemistosta.
ichmod read <käyttäjä> <polku> Asettaa käyttäjälle lukuoikeudet tiedostoon/hakemistoon.
ichmod write <käyttäjä> <polku> Asettaa käyttäjälle kirjoitusoikeudet tiedostoon/hakemistoon.
ichmod own <käyttäjä> <polku> Asettaa käyttäjälle omistusoikeudet tiedostoon/hakemistoon.
ils -A <polku> Listaa tiedoston/hakemiston oikeudet.
 

Monesti 'ils -A' näyttää kansioille rivin 'Inheritance - Enabled'. Tämä on asetus, joka määrittelee sen miten oikeudet kansion periytyvät. Kansioon, jossa kyseinen asetus on, luodut tiedostot ja alihakemistot saavat automaattisesti samat oikeudet kuin mitä kyseisellä kansiolla on. Tätä asetusta voi muuttaa seuraavalla komennolla:

$ ichmod noinherit 

tai

$ ichmod inherit 

Lisäohjeita ja optioita saa komennolla 'ichmod -h'.

 

 

Metadatojen käsittelyn automatisoinnista ja skriptauksesta

Esimerkki 1. Metatietojen syöttäminen, shell/komentorivi
Komentorivikomentoja voidaan käyttää kuten muitakin komentorivityökaluja kutsumalla niitä esimerkiksi shell-skripteistä. Oletetaan esimerkiksi, että metatietoja on exportattu jostain käyttäjän järjestelmästä tekstimuodossa, esim:

version|2.0
size|420|bytes
length|10|rows

Oletetaan, että ylläolevat rivit on tallennettu tiedostoon 'file1.met'. Käyttämällä 'itext2meta' -bash-skriptiä kyseiset metatiedot liitetään IDA:ssa olevaan tiedostoon nimeltä 'myfile.dat' seuraavalla komennolla:

$ itext2meta myfile.dat < file1.met

Ennen komennon suoritusta täytyy käyttäjän olla sisäänkirjautuneena komennolla iinit.

Skripti kutsuu iRODSin komentorivikomentoa 'imeta' tekemään varsinaisen metadatan lisäyksen, ottaen huomioon IDAn metadatamallin. IDA lisää jokaiseen tiedostoon minimimetatietomallin mukaiset kentät ja niihin kenttiin joihin ei voida automaattisesti generoida arvoja, arvoksi tulee MISSING_METADATA. Komento 'itext2meta' korvaa valmiiden kenttien arvon MISSING_METADATA tiedoston sisältämällä arvolla, muutoin 'itext2meta' -komento tekee uuden kentän. Komentoa 'itext2meta' voidaan käyttää osana muuta automatisointia, kuten tekemällä skripti, joka käsittelee samalla useaa tiedostoa kutsumalla 'itext2meta'-komentoa eri tiedostoille.

Visualisoituna esimerkki datan ja metadatan siirron periaatteesta jostain toisesta järjestelmästä:

Shell-ympäristössä usean tiedoston käsittelyoperaatioita voidaan tehdä myös suoraan komentorviltä, tekemättä erillisiä skriptitiedostoja. Esimerkkinä käyttäjän komennon suoritushetken hakemiston kaikkien .c -päätteisten tiedostojen metadatakentän "Rights Category" asettaminen arvoon "PUBLIC DOMAIN":

$ ils | grep '\.c$' | while read i; do imeta set -d "$i" 'Rights Category' 'PUBLIC DOMAIN'; done

Ylläolevassa on edellytyksenä että tiedostojen nimissä ei ole lainausmerkkejä rikkovia merkkejä käytössä.

 

Esimerkki 2. Komentorivikäyttö Java APIn kautta (vain edistyneille käyttäjille)
Komentorivikomentoja voi hyödyntää myös Java API:n - Jargonin - kautta. Tällöin käyttäjän ohjelma kutsuu iRODSin Java API:n kutsuja ja kyseinen Java-kirjasto muuntaa ne iRODS-protokollan komennoiksi verkon yli. Esimerkiksi IDAn selainkäyttöliittymä Tutkijan käyttöliittymä käyttää Java API:a.

Esimerkkiohjelma ja sen lähdekoodi metadatan syöttöohjelmasta, jonka käyttö on:

Usage: Jmeta [-u user] [-p passwd] -d IdaFullPathFilename name value [unit]
Note: entering passwd on command line is not recommended
Kyseinen ohjelma osaa Windows-ympäristössä UTF-8 skandimerkkien syöttämisen IDAan, toisin kuin iRODSin Windows 'imeta' -komento.

 

X:\Jmeta-1.0>java -jar Jmeta.jar -u jdoe -d /ida/csc/projectx/Makefile kaupunki Jyväskylä

Ida password:

X:\Jmeta-1.0>