Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Multimédia => Téma založeno: Pavel D 26 Srpna 2014, 11:23:49
-
Zdravím a předem děkuji za pomoc.
Při přihlášení do Openelec v terminálu zadám
ssh root@10.0.0.103 a jsem vyzván k zadání hesla ( heslo je openelec ).
Napsal jsem si jednoduchý skript, který přesouvá soubory v MMC Openelec do jiné složky a přejmenuje jejich příponu, aby šly přehrávat v naší televizi přes DLNA. S původní příponou .mkv nejdou, s .avi bez problémů ano.
Potřeboval bych to přihlášení dostat do skriptu, abych tento skript mohl spustit spouštěčem ( takto pouštím svoje skripty z plochy ).
Hledal jsem na google, ale nepovedlo se mi to zprovoznit to automatické přihlášení.
Pro ilustraci můj skript:
#!/bin/bash
ls -t -r "/media/Data/Filmy" > "/storage/screenshots/Zaznamy_Openelec.txt"
Prvnifilm=$(head -n1 '/storage/screenshots/Zaznamy_Openelec.txt')
mv "/media/Data/Filmy/$Prvnifilm" "/media/Data/Zaznamy/$Prvnifilm.avi"
exit 0
Tento můj dotaz se asi týká obecně Linuxu, že je to Openelec ( XBMC ) je asi jedno, linuxové příkazy tam jdou.
Díky.
-
zagugli `linux expect ssh login' ..
muj example:
#!/usr/bin/expect -f
# for ios 12.x and probably +/- higher/lower
# usage: ssh.expect [user@]host path_to_file_containing_password some_ios_command
#
# TODO: learn howto to do that Tcl checks, if the pwd file has 0600 perms and
# owned by a EUID
#
set timeout 30
set fd [open [ lindex $argv 1]]
set _pwd [read $fd]
close $fd
spawn -noecho $env(SHELL)
spawn -noecho ssh [lindex $argv 0] "[lindex $argv 2]"
log_user 0
expect "yes/no" {
send "yes\r"
expect "*?assword" { send "[lindex $_pwd]\r" }
} "*?assword" { send "[lindex $_pwd]\r" }
log_user 1
expect eof
-
Děkuju za odpověď.
Snažil jsem se to pochopit, ale mohu překládat jen přes google překladač.
Jak jsem pochopil, heslo nemusí být v samostatném souboru - nepotřebuji žádné zabezpečení, klidně ať se někdo podívá na včerejší Události nebo Ženu za pultem co je nahrané v PC.
Pokud jsem to správně pochopil mělo by to vypadat takto
!/usr/bin/expect -f
spawn ssh root@10.0.0.103
set timeout 30
expect "password: openelec"
expect "root"
set timeout 30
"/storage/screenshots/Prejmenovani.sh"
Bohužel to teď nemohu vyzkoušet, jestli je tam nějaká chyba, napiš prosím. Díky.
-
to bych nerekl, ze bude fungovat :) .. za budes mit cas, tak to vyzkousej .. muzes pouzit muj expect script, ten funguje urcite
-
Díky za tvůj script.
Já se snažím to zprovoznit, ale nějak se mi to nedaří, jsem úplný začátečník. Nevím kam mám napsat tu IP adresu Openelec - tj.10.0.0.103 - co a čím nahradit.
uživatel je root
heslo je openelec
Do terminálu vždy píšu ssh root@10.0.0.103
Snažím se to přeložit přes google z cizích stránek.
Když bys mi mohl v tomhle poradit.
-
rekneme, ze se muj skript jmenuje ssh.expect, example:
# ./ssh.expect root@10.0.255.203 ./password "cat /etc/redhat-release"
CentOS release 6.5 (Final)
tady jsem pouzil svuj skript a heslo na roota jsem si precetl ze souboru "password" v soucasnem adresari a provedl jsem na pocitaci 10.0.255.203 prikaz v uvozovkach ..
je mozne, ze bude potreba ten skript trosku upravit podle toho koncoveho zarizeni .. viz to
expect "yes/no" ### eg kdyz se to pta na klic, ze chce importovat a potom ocekavam, ze na dalsim radku bude string s "*?assword" .. ono to ma syntaxi ze to ceka:
neco { neco_akce } neco_jineho {neco_jineho_akce }
samozrejme to muzes vnorovat
-
Takže jestli jsem to správně pochopil:
- zkopíroval jsem tvůj script ( z dopoledne ) tak jak je a v Geany ho uložil jako ssh.expect do adresáře /. Nastavil jsem mu vlastnosti jako spouštěcí - tj. exec.
- vytvořil jsem v Geany soubor password, napsal do něj jenom openelec a uložil do stejného adresáře /.
- vytvořil jsem script s názvem třeba Prihlaseni.sh a zkopíroval do něj
# ./ssh.expect root@10.0.0103 ./password "ls /storage"
Adresu jsem zadal svojí 10.0.0.103 a mezi uvozovkami příkaz,co se má vykonat, třeba výpis složky nebo třeba můj původní script s přesunem a přejmenováním přípon.
Chápu to správně ?
Jestli ne tak se omlouvám.
-
zda se, ze to chapes dobre .. nicmene nechapu proc to cele davas do dalsiho skriptu
-
Díky za pomoc, ale tohle jsem přestřelil. Myslel jsem, že to bude něco podobného jako když připojuji adresář ze vzdáleného PC, např.
mount -t cifs “//10.0.0.2/Samba_Mironet” /mnt/sda2/SMB -o user=Pavel,password=Pavel
Tak se budu připojovat ručně, naštěstí si příkaz "ssh root@10.0.0.103" pamatuje šipka nahoru z bash_history. Tak už potom napíšu jen openelec.
Ještě že se mi podařilo načítat ty názvy do proměnné, vyťukávat je ručně by bylo k zbláznění. Takhle je to po přihlášení na jeden klik.
Tohle bez základních znalostí opravdu nejde.
Ještě jednou díky.
-
coze ? nechapu
-
Myslel jsem to tak, že nejsem vybavený téměř žádnými znalostmi.
Předpokládal jsem, že to přihlášení bude "na jeden řádek" něco jako jsem dal výše příklad u Samby
mount -t cifs atd...................
Teď jsem si tu změnu přípon opsal pro počítač s Windows
NET USE X: \\10.0.0.103\Filmy
REN X:\ *mkv *.avi
NET USE X: /delete
Je to opravdu jen jedno kliknutí na soubor Prejmenovani.bat, funguje perfektně.
-
Myslel jsem to tak, že nejsem vybavený téměř žádnými znalostmi.
Předpokládal jsem, že to přihlášení bude "na jeden řádek" něco jako jsem dal výše příklad u Samby
mount -t cifs atd...................
Teď jsem si tu změnu přípon opsal pro počítač s Windows
NET USE X: \\10.0.0.103\Filmy
REN X:\ *mkv *.avi
NET USE X: /delete
Je to opravdu jen jedno kliknutí na soubor Prejmenovani.bat, funguje perfektně.
ale dyk to je na jeden radek