Smbclient - Samba Windowsi teenuste klientprogramm

Allikas: Kuutõrvaja
Redaktsioon seisuga 25. juuni 2015, kell 21:13 kasutajalt Jj (arutelu | kaastöö)

Programm Smbclient

Programm Smbclient võimaldab suhelda Windowsi masina või Samba serveri teenustega. Interaktiivses režiimis kasutamisel sarnaneb ta ftpga ning saab tõepoolest faile kopeerida. Lisaks on võimalik näiteks trükkida Windowsi printerile ja saata teateid. Programmi Smbclient sobib hästi kasutada vastkonfigureeritud Samba serveri testimiseks.

Interaktiivselt käivitamiseks anname näiteks korralduse, kus Windowsi kasutaja priit pääseb juurde Windowsis väljajagatud failiteenusele //kalake/priit

bash~$ smbclient //kalake/priit "priiduwindowsiparool" -U priit
added interface ip=192.168.1.1 bcast=192.168.1.255 nmask=255.255.255.0
Password: 
Domain=[ZOO] OS=[Windows NT 4.0] Server=[NT LAN Manager 4.0]
smb: \>

Sellest Smbclient'i viibast saab anda Smbclienti käske, mh exit, help, get, put, mget, mput, prompt mkdir cd, rm, prompt, ls, mille tähendus on sarnane vastavaile ftp käskudele.

Kui Smbclientiga külastatakse printimisteenust, siis saab UNIXi faile türkkida Windowsi printerile näiteks selliselt, eeldades, et tegu on postskript printeriga

smb: \> print unixi.fail.ps

Praktiliselt kasutatakse Smbclient'i skriptides, kuidas?, seda järgnevalt uurimegi.

Smbclient sobib hästi Samba serveri häälestamisel testimiseks. Näiteks soovides näha kõiki Samba serveri pakutavaid teenuseid

bash# smbclient -L localhost
added interface ip=192.168.1.1 bcast=192.168.1.255 nmask=255.255.255.0
Password: 
Domain=[ZOO] OS=[Unix] Server=[Samba 2.0.7]

	Sharename      Type      Comment
	---------      ----      -------
	homes          Disk      kasutaja    kodukataloog
	avalik         Disk      Koigile kirjutamiseks ja lugemiseks
	hpps           Printer   Mustvalge HP 6MP PostScript printer
	IPC$           IPC       IPC Service (Samba server) 

	Server               Comment
	---------            -------
	samba               Samba server 2.0.7

	Workgroup            Master
	---------            -------
	ZOO                  samba

Windowsi failiteenuse kasutamine

Kui Windowsi masinas jagada ketas võrgus välja, siis saavad teised võrgu arvutid seda kasutada, kuid sõltuvalt õigustest, kas siis kirjutamiseks või lugemiseks.

Eeldades, et NTs on kasutaja priit ning talle on ligipääsetav failiteenus

//kalake/priit

mis vastab näiteks NT kataloogile C:\users\priit, saab selle UNIXi failisüsteemi külge ühendada selliselt

bash# mount -t smbfs -o username=priit,password=priiduwindowsiparool,uid=priit,gid=priit //kalake/priit /mnt/kalake/priit

eeldusel, et

   * Linuxi kernelisse on kompileeritud Filesystems -> Network File Systems -> SMB filesystem support (to mount WFW shares etc.)
   * Samba server konfigureerida suvandiga --enable-smbmount

Windowsi printeri kasutamine

Kui Windowsi printeriteenus //kalake/hpps on tööle seatud ja võrku välja jagatud, siis saab kirjeldada printerikirjeldusfailis tavalise UNIXi printeri, mis prindib Windowsi printerile.

Lisage näiteks selline kirje printerikirjeldusfaili /etc/printcap

nt:\
    	:lp=/dev/null:sh:\
    	:sd=/var/spool/lpd/kalake:\
	:if=/var/spool/lpd/kalake/kalake:

kus skript /var/spool/lpd/kalake/kalake korraldab Smbclient'i suhtlemist NTga

#!/bin/sh
cat | /usr/local/samba/bin/smbclient "//kalake/hpps" "" -U guest -c 'print -' >> /tmp/hpps.log

kus

   * Windowsi printerile hpps saab kasutaja guest ilma paroolita printida
   * logi suunatakse faili /tmp/hp.log

Teate saatmine

Teate saatmiseks Windowsi masinale tuleb anda UNIXi viibast näiteks korraldus

bash~$ cat ~/teade | smbclient -M kalake

kus failis ~/teade on saadetav tekst.

Windowsi failiteenuse varundamine

Programm Smbclient võimaldab Windowsi failiteenust täies mahus kopeerida ning samal ajal arhiveerida

bash~$ smbclient //kalake/priit "tere" -U priit -Tc /home/priit/kalake/kalake.tar

arhiveerimise tulemuse võib saata ka väljundisse ja kasutada seda edasi näiteks pakkimiseks

bash~$ smbclient //kalake/priit "tere" -U priit -Tqc - | gzip > /home/priit/kalake/kalake.tar.gz

ning vajadusel saab varundatu lahti harutada

bash~$ smbclient //kalake/priit "tere" -U priit -Tx /home/priit/kalake/kalake.tar

kasutatud Smbclinet'i võtmed:

   * q - quiet
   * c - compress
   * x - extract
   * - - kasuta väljundit 

Samba ja utf8

Probleem, samba näitab vaid 134 faili kuigi neid kaustas palju. Taipasin üks hetk kontrollida smbclienti väljundis rida 135 ja nägin seal küsimärke. Kui oma locale paika panin, siis olid read:

134:  Mingi video.mkv
135:  Полосатый.mkv
136:  Mingi teine video.mkv

See tähendab, et mingis suvalises Samba järjestuses oli mingi kirillitsa fail alati ühe koha peal, kuid see ei olnud ei tähestiku ega ajalises järjestuses, mistõttu ei olnud ka ilmne, et nimekiri kuskilt lihtsalt pooleli jäi.

Lahenduseks mount_smbfs tuleb korralikus UTF-8-s haakida:

mount_smbfs -E UTF-8:UTF-8 ...

Nüüd näitab kõiki 1400+ faili.