- Lähtökohta
- Aion suorittaa monimutkaisen, paljon eri komentoja sisältävän tehtävän komentorivitulkissa.
- Ongelma
- Haluan tallentaa ajamani komennot ja kaiken niiden komentotulkkiin tuottaman ulostulon tiedostoon, jotta voin jälkeenpäin käyttää sitä muistiapuna kuvaillessani miten tehtävän suoritin.
- Ratkaisu
- Voin tallentaa komentorivitulkkiin kirjoittamani komennot ja niiden ulostulon
script
-komennolla.
Seuraavassa esimerkissä suoritan kaksiecho
-komentoa ja yhdencat
-komennon niin, että komennot ja niiden ulostulo tallentuvattesti.txt
-nimiseen tiedostoon. Tällainen, tavallaan script-komennon sisällä ajettava lohko on nimeltään istunto, ja olen lihavoinut sen sisällön seuraavassa:jani@shuttle-xpc:~/tmp$ script testi.txt Skripti käynnistetty, tiedosto on testi.txt jani@shuttle-xpc:~/tmp$ echo "tämä on testi." tämä on testi. jani@shuttle-xpc:~/tmp$ echo "voisin ajaa tässä mitä hyvänsä komentoja" > foo.txt jani@shuttle-xpc:~/tmp$ cat foo.txt voisin ajaa tässä mitä hyvänsä komentoja jani@shuttle-xpc:~/tmp$ exit Skripti suoritettu, tiedosto on testi.txt jani@shuttle-xpc:~/tmp$
Aloitin istunnon tallentamisen
script testi.txt
-komennolla ja lopetin senexit
-komennolla. Testi.txt -tiedostoon tallentui kaikki mitä näiden kahden komennon suorituksen välissä tapahtui eli yllä olevassa lihavoimani istunto, sekä lisäksi istunnon aloitus- ja lopetusaika. Tulostan seuraavassa cat-komennolla testi.txt -tiedoston sisällön ja lihavoin sen:jani@shuttle-xpc:~/tmp$ cat testi.txt Skripti käynnistetty to 28. helmikuuta 2008 09:36:31 jani@shuttle-xpc:~/tmp$ echo "tämä on testi." tämä on testi. jani@shuttle-xpc:~/tmp$ echo "voisin ajaa tässä mitä hyvänsä komentoja" > foo.txt jani@shuttle-xpc:~/tmp$ cat foo.txt voisin ajaa tässä mitä hyvänsä komentoja jani@shuttle-xpc:~/tmp$ exit Skripti suoritettu to 28. helmikuuta 2008 09:37:19 jani@shuttle-xpc:~/tmp$
- Huomautuksia
-
- Istunnon lopettamiseen voi käyttää exit-komennon sijasta näppäinyhdistelmää
Control + D
. - Script-komennon ohjesivu varoittaa, että jotkin interaktiiviset komennot (kuten
vi
) saattavat kirjoittaa tallennustiedostoonroskaa
, eli satunnaiselta vaikuttavia merkkejä. Niiden käytöstä ei välttämättä jää tallennustiedostoon ymmärrettäviä kirjauksia. - Ratkaisussa oleva ensimmäinen esimerkki on sekin tallennettu scriptiä käyttäen; ajoin siis script-komennon istunnossa, jota suoritin toisessa script-komennolla aloitetussa istunnossa. Istuntoja voi siis sisäkkäistää.
- Kaikki komennot tallentuvat
Bash
-komentotulkissa käyttäjäkohtaiseen historiaan, jota voi hallitaHISTSIZE
,HISTFILE
jaHISTFILESIZE
-muuttujien avulla. Komentohistoriaan tallennetaan kuitenkin vain komennot, ei niiden ulostuloa. Lisäksi komentohistorian koko on rajoitettu.
- Istunnon lopettamiseen voi käyttää exit-komennon sijasta näppäinyhdistelmää
Month: February 2008
-
[Ratkaisu] Komentojen ja niiden ulostulon tallentaminen tiedostoon
-
Kolumni: Tietokoneesi on vaarassa!
Toverini Juha linkkasi minut kuvaan hauskasti mönkään menneestä huijausyrityksestä: Linux-käyttäjä oli saanut Skypen kautta ilmoituksen, jonka mukaan hänen
Windowsinsa
tietoturva oli vaarantunut, ja missä häntä kehotettiin lataamaanpaikkaustiedosto
ongelman korjaamiseksi. Kyse on tietysti Windows-haittaohjelman levityksestä valheellisen tietoturvailmoituksen avulla.Huomioni kiinnittyi blogimerkinnän perässä olleeseen kommenttiin, jonka mukaan yrityksen kohteeksi joutunut käyttäjä voisi aivan hyvin ollakin vaarassa, koska hän käyttää Ubuntua, joka muistuttaa niin paljon Windowsia. Auts!
Olen kyllä miettinyt, että Ubuntun (ja tietysti muidenkin vastaavien distrojen) tapa kysellä järjestelmänhallinnan salasanaa tuon tuostakin on pikkuisen huolestuttava sikäli, että siinä turtuu hyvin pian toimenpiteen ratkaisevuudelle. Olen itsekin asentanut Gutsyyni järjestelmänhallinnan oikeuksia käyttäen pari pakettia tutkimatta niiden alkuperää näin jälkikäteen ajateltuna riittävän hyvin. Kun web-sivuilla jaeltujen ohjelmapakettien asentaminen järjestelmänhallinnassa vaadittavin oikeuksin on näin suoraviivaista, ollaan jo käytännössä samalla viivalla Vistaa varhaisempien Windowsien kanssa siinä, että tietoturvan mahdollisesti vaarantavien ohjelmien asentelusta tulee liian helposti jokapäiväistä kauraa.
Tähän järjestelmänhallinnan helppouteen tottuneena en kuitenkaan kovin mieluusti enää luopuisi siitä. Ja sikäli uskoisin Linux-käyttäjänä vielä olevani vanhojen Windowsien käyttäjiä paremmassa turvassa, että ainakaan niin kauan kuin en ole onnistunut vaarantamaan järjestelmääni, ohjelmat eivät pääse järjestelmääni käsiksi omine nokkinensa, siis minun siitä tietämättä. Vaarantuminen vaatii periaatteessa aina minulta sen virheen, että annan vaaralliselle ohjelmalle ne järjestelmänvalvojan oikeudet. Mutta miten tätä järjestelmänhallinnan oikeuksien jatkuvaan peräämiseen liittyvää tietoturvariskiä voisi vähentää?
En ole perehtynyt SELinuxiin, mutta se voisi ehkä olla avuksi. Sen lisäksi en kyllä keksi äkkiseltään muuta ratkaisua kuin sen, että perusjärjestelmän päälle ei asenneta mitään muuta kuin virtualisointi, ja käyttäjä päästetään sen jälkeen vain virtuaalihiekkalaatikkoon, jossa saa asennella mitä huvittaa. Isäntäjärjestelmä tarjoaa palomuurin ja muita tietoturvaominaisuuksia, jotka valvovat tätä hiekkalaatikkoa, ja jos isäntä havaitsee hiekkalaatikossa epäilyttävää toimintaa kuten vaikkapa viruksen aiheuttamaksi epäiltyä liikennettä, se puuttuu peliin. Käyttäjää varoitetaan, ja vasta uhan torjumisen tai tietoturvan vaarantumisen paikkaamisen yhteydessä kysytään tarvittaessa oikeita järjestelmänvalvojan oikeuksia, eli oikeuksia isäntäjärjestelmän hallintaan.
Siinä tapauksessa sitten kylläkään käyttäjää ei hiekkalaatikkonsa tyhjäksitekemisen takia välttämättä enää paljoa lohduta se, ettei isäntäjärjestelmä ole vaarantunut. Isäntäjärjestelmä voisi kuitenkin pelkän valvonnan ohella tehdä hiekkalaatikosta myös varmuuskopioita tai järjestelmäkuvatiedostoja (snapshot) säännöllisesti, jolloin kokonaan puhtaalta pöydältä aloittamisen sijasta käyttäjä voisikin valita aiempaan, vielä vaarantumattomaan hiekkalaatikkoon palaamisen eikä siten menettäisi ihan kaikkea.
Lopuksi täytyy vielä todeta, että tähän ehdotukseeni voi olla sisältyä ammottavia aukkoja, sillä en ole tietoturva-asiantuntija, en virtualisointiasiantuntija enkä pidä itseäni edes Linux-asiantuntijana, vaikka siitä kokemukseni näistä kolmesta aiheesta lieneekin kaikkein laajin.
-
All In Wonder ja xawtv: grabbing: not supported [try -noxv switch?]
- Lähtökohta
- Näytönohjaimeni on Connect 3D:n valmistama, AGP-väylässä kiinni oleva Radeon 9600 -piirisarjalla varustettu All In Wonder. Olen valinnut näytönohjaimelle avoimen lähdekoodin ajurit käyttöön.
Olen kopioinut näyttökortin ajurilevyltäativmc20.cod
-nimisen mikrokooditiedoston/usr/lib/xorg/modules/multimedia/
-hakemistoon ja nimennyt senrt2_pmem.bin
-nimiseksi. Näytönohjaimen ajurit ja mikrokooditiedosto ladataan onnistuneesti X-ikkunointijärjestelmän käynnistymisen yhteydessä.
Pakettienhallinnassaxawtv
on asennettuna.
Olen kytkenyt digitaalikamerani videoulostulon näytönohjaimen komposiittisisääntuloon ja käynnistänyt kameran, jolloin se alkaa välittömästi lähettää kuvasignaalia videoulostuloonsa. Olen käynnistänytxawtv
:nPäätteestä
ja pystyn katselemaan komposiittisisääntuloon tulevaa kameran näkemää kuvaa xawtv:n ikkunasta.
Xawtv:n ikkuna on valittuna. Haluan tallentaa otoksen kameran näkemästä kuvasta, joten painan näppäimistönig
-näppäintä. - Ongelma
- Kuva ei tallennu. Sen sijaan Päätteeseen tulostuu vain seuraavanlainen rivi:
grabbing: not supported [try -noxv switch?]
- Ongelman syy
- Xawtv käyttää komposiittisisääntuloon tulevan kuvasignaalin näyttämiseen Xvideo-laajennusta. Xvideo-laajennus ei tue kuvien kaappaamista.
- Ratkaisu
- Ei vielä tiedossa.
- Huomautuksia
-
- Xawtv:n käynnistäminen Päätteeseen tulostuneen ilmoituksen ehdottoman -noxv -valitsimen kanssa (ilman muita valitsimia) ei onnistu. Silloin xawtv antaa seuraavanlaisen virheilmoituksen:
X Error of failed request: XF86DGANoDirectVideoMode Major opcode of failed request: 136 (XFree86-DGA) Minor opcode of failed request: 1 (XF86DGAGetVideoLL) Serial number of failed request: 63 Current serial number in output stream: 63
- Mikäli annan xawtv:lle -noxv -valitsimen lisäksi
-nodga
-valitsimen, se käynnistyy, mutta silloin se ei näytä komposiittisisääntuloon tulevaa kuvaa. Xawtv kykenee ilmeisesti tarttumaan komposiittisisääntulon kuvaan ainoastaan Xvideo-laajennuksen avulla, eikä -noxv -valitsinta käytettäessä siksi päästä kuvaan lainkaan käsiksi, jolloin sitä ei myöskään pystytä tallentamaan. - Ruutukaappauksen ottaminen xawtv:n ikkunasta (
Alt + Print Screen
) ei toimi, eikä koko työpöydästä otettuun ruutukaappaukseen (Print Screen) sisältyvän xawtv:n ikkuna sisällä sen näytöllä sisältämää kuvaa.
- Xawtv:n käynnistäminen Päätteeseen tulostuneen ilmoituksen ehdottoman -noxv -valitsimen kanssa (ilman muita valitsimia) ei onnistu. Silloin xawtv antaa seuraavanlaisen virheilmoituksen:
-
[Ratkaisu] No matching Device section for instance (BusID PCI:3:0:1) found
- Lähtökohta
- Näytönohjaimeni on Connect 3D:n valmistama, AGP-väylässä kiinni oleva Radeon 9600 -piirisarjalla varustettu All In Wonder, jossa on kaksi VGA-ulostuloa. Olen kytkenyt ainoan käytössä olevan näyttöni ensisijaiseen VGA-ulostuloon. Olen valinnut näytönohjaimelle avoimen lähdekoodin ajurit käyttöön, ja ikkunointijärjestelmä ja työpöytä toimivat niiden kanssa hyvin.
- Ongelma
- Ikkunointijärjestelmän lokiin kirjautuu sen käynnistyksen yhteydessä seuraavanlainen varoitus:
(WW) RADEON: No matching Device section for instance (BusID PCI:3:0:1) found
Vaikka ikkunointijärjestelmä tuntuukin toimivan, virheilmoitus saa minut pohtimaan, olisiko sen asetustiedossa tehtävissä jotain sellaista, jonka jälkeen varoitusta ei enää tulisi.
- Ratkaisu
- Varsinkin Radeon-piirisarjalla varustetuille, useampia ulostuloja tarjoaville näytönohjaimille on tyypillistä, että ne näkyvät laitetasolla järjestelmälle kahtena eri laitteena. Toinen laite on kuitenkin täysin näennäinen ja se on läsnä vain, koska jotkin käyttöjärjestelmät tarvitsevat sen, jotta ensisijaisen lisäksi muutkin ulostulot toimisivat. X.org-ikkunointijärjestelmää käytettäessä varoituksen voi jättää täysin huoleti huomiotta.
- Huomautuksia
-
- Toisesta laitteesta saa sen näennäisyydestä huolimatta lisätietoja
lspci
-komennolla. Tiedot ovat melkein samat kuin silloin, kun lspci kohdistetaan lukemaan ensimmäistä näytönohjainlaitetta. - Lisäsin kokeeksi ylimääräisen
Device
-lohkon/etc/X11/xorg.conf
-tiedostoon. Määrittelin laitteen portin varoituksessa annetun mukaisesti ja asetin sen käyttämään samaa avoimen lähdekoodin ajuria kuin mitä varsinainen näytönohjainlaitekin käyttää. Sama varoitus kirjattiin kuitenkin lokiin käynnistyksen yhteydessä sen jälkeenkin.
- Toisesta laitteesta saa sen näennäisyydestä huolimatta lisätietoja
-
[Ratkaisu] Grep ja looginen TAI
- Lähtökohta
- Minulla on
nimet.txt
-niminen tekstitiedosto, joka sisältää seuraavat rivit:Jussi Matti Pekka Ville Barbara Eini Lissu Noora
- Ongelma
- Haluan etsiä ja tulostaa komentorivitulkissa tekstitiedostosta ne rivit, joilla esiintyy vähintään yksi kirjaimista a, b ja e.
- Ratkaisu
- Suoritan seuraavan komennon:
egrep -i '(a|b|e)' nimet.txt
Komento tulostaa komentorivitulkkiin haluamani rivit, tässä tapauksessa kaikki muut paitsi
Jussi
– jaLissu
-rivin. - Huomautus
-i
-valitsin saa aikaan sen, että etsimieni kirjainten kirjainkoosta ei välitetä. Mikäli haluaisinkin etsiä rivit joilla esiintyy vähintään yksi isoista kirjaimista A, B ja E, pitäisi yllä olevassa ratkaisussa sulkumerkkien sisällä olevien kirjainten koon vaihtamisen lisäksi jättää -i -valitsin pois:egrep '(A|B|E)' nimet.txt.
Tämä komento tulostaa ainoastaan
Barbara
– jaEini
-rivin.
-
[Ratkaisu] Mikä X.orgin versio on käytössä?
- Lähtökohta
- Pakettienhallinnassa
xserver-xorg
on asennettuna. - Ongelma
- Haluan saada selville mitä X.orgin julkaisunumeroa järjestelmääni asennettu versio X-ikkunointijärjestelmästä vastaa.
- Ratkaisu
- Avaan
Päätteen
ja suoritan seuraavan komennon:dpkg -s xserver-xorg | grep ^Version: \ | cut -d\ -f 2 | cut -d: -f 2 | cut -d- -f 1
Komennon antama tuloste, tässä tapauksessa 7.2, kertoo mikä versio X.orgista on asennettuna.
- Huomautuksia
-
- Tätä ratkaisua varten sovelsin The How-To Geek -blogin artikkelia.
- Mikäli haluaisin koko ikkunointijärjestelmäjulkaisun versionumeron sijasta saada vain ikkunointipalvelimen versionumeron, sen saisin nopeimmin selville
X -version
-komennolla.
-
[Ratkaisu] MythTV ei pysty lukittautumaan signaaliin
- Lähtökohta
- Olen asentanut
MythTV
:n. Olen tehnyt tarvittavat sisääntuloasetukset, skannannut ja löytänyt kanavia ja tallentanut ne MythTV:n tietokantaan. Pystyn katselemaan signaalin ohjelmia. - Ongelma
- Toisinaan käynnistettyäni MythTV:n ja valittuani sen päävalikosta kohdan
Watch TV
, näytön kuva muuttuu mustaksi eikä kanavan ohjelmaa näy. Näytöllä on vain kanava- ja ohjelmatiedot ja seuraava ilmoitusteksti:You should have gotten a channel lock by now. You can continue to wait for a signal, or you can change the channels with Up and Down, change input's (C), capture cards (Y), etc.
- Ongelman syy
- Syöttösignaali on heikkolaatuinen.
- Ratkaisu
- Poistan signaalin lähtöpisteen ja sisääntulopisteen väliltä kaikki ylimääräiset sovittimet ja jatkojohdot. Kytken signaalin käyttäen vain yhtä, mahdollisimman lyhyttä ja hyvälaatuista kaapelia. Tämän jälkeen MythTV pystyy käynnistettäessä lukittautumaan signaaliin.
-
[Ratkaisu] Tallenteen trimmaaminen MythTV:llä
- Lähtökohta
- Olen käynnistänyt
MythTV Frontendin
. Olen ohjelmoinut tallennuksen. Tallennus on onnistunut, ja pystyn katselemaan tallennetta MythTV:ssä. Tallenne on MPEG2-muotoinen videotiedosto. - Ongelma
- Tallenteen alussa ja lopussa on lyhyet jaksot muuta materiaalia kuin varsinaisesti tallentamaani ohjelmaa. Haluan leikata tallennetta MythTV:ssä niin, että tallenne sisältää pelkästään itse ohjelman.
- Ratkaisu
- Muutan ensin yhden MythTV:n videonmuunnosprofiileista tekemään häviöttömiä muunnoksia. Sen jälkeen merkkaan tallenteen aloitus- ja lopetuskohdat niin, että ohjelman ulkopuolinen materiaali jätetään pois muunnetusta tallenteesta. Lopuksi muunnan tallenteen käyttämällä tekemiäni merkkauksia ja muunnosprofiilia.
- Muutan yhden videonmuunnosprofiileista tekemään häviöttömiä muunnoksia.
- MythTV:n päävalikosta navigoin seuraavasti:
Utilities/Setup → Setup → TV Settings & Recording Profiles → Transcoding → Autodetect from MPEG2
. - Profiilin asetusikkunassa merkkaan
Lossless transcoding
-kohdan käyttöönotetuksi. - Poistun profiilin asetusikkunasta valitsemalla kohdan
Finish
, minkä jälkeen palaan MythTV:n päävalikkoon.
- MythTV:n päävalikosta navigoin seuraavasti:
- Merkkaan tallenteelle haluamani aloitus- ja lopetuskohdat.
- Valitsen MythTV:n päävalikosta kohdan
Media Library
, ja avautuvasta valikosta kohdanWatch Recordings
. - Valitsen tallenteen, jota haluan leikata.
- Tallenteen pyöriessä näytöllä painan näppäimistöni M-kirjainta, ja näytölle avautuvasta valikosta valitsen kohdan
Edit Recording
. - Käytän nuolinäppämiä aloituskohdan etsimiseen: nuolinäppäin vasempaan vie ohjelmassa taaksepäin, nuolinäppäin oikeaan eteenpäin, ja ylös- ja alasnuolet muuttavat yhdellä vasemman tai oikean nuolinäppäimen painalluksella yli hypättävän ajan määrää isommaksi ja pienemmäksi.
- Kun olen kohdassa, josta haluan lopullisen tallenteen alkavan, painan näppäimistön rivinvaihtonäppäintä. Avautuvasta kyselystä valitsen vastausvaihtoehdon
Delete before this frame
. - Käytän nuolinäppäimiä lopetuskohdan etsimiseen samalla tavalla kuin aloituskohdan etsimisessäkin (4.).
- Kun olen kohdassa, johon haluan lopullisen tallenteen päättyvän, painan näppäimistön rivinvaihtonäppäintä. Avautuvasta kyselystä valitsen vastausvaihtoehdon
Delete after this frame
. - Poistun aloitus- ja lopetuskohtien merkkauksesta näppäimistön Esc-näppäimellä niin, että tallenne alkaa jälleen pyöriä.
- Valitsen MythTV:n päävalikosta kohdan
- Muunnan tallenteen käyttämällä tekemiäni merkkauksia ja muunnosprofiilia.
- Painan näppäimistön P-kirjainta, jolloin tallenteen toisto keskeytyy.
- Painan jälleen M-kirjainta, ja valitsen avautuvasta valikosta kohdan
Begin transcoding
, ja edelleen avautuvasta valikosta kohdanAutodetect
. - Odotan tallenteen muuntamisen valmistumista.
Kun tämän jälkeen katson tallennetta, se sisältää vain ohjelman ilman ylimääräistä materiaalia sen edessä tai perässä.
- Muutan yhden videonmuunnosprofiileista tekemään häviöttömiä muunnoksia.
- Huomautus
- Kun muunnos on valmis, M-kirjaimen painalluksella avautuvassa valikossa on jälleen kohde
Begin Transcoding
. Siihen saakka, eli muunnoksen tekemisen ollessa vielä meneillään, Begin Transcoding -kohteen tilalla on kohdeStop Transcoding
. Kohteen nimi ei päivity mikäli valikko on auki, eli se täytyy sulkea Esc-näppäimellä ja avata uudestaan M-kirjaimella jotta muuntamisen etenemistä voi seurata. Tämä on varsin köykäinen tapa, mutta en ole löytänyt MythTV:stä muutakaan muuntamisen etenemisen ilmaisinta.