Wednesday, December 16, 2009

Share Folder on Ubuntu

Hi, I like google, so i wanna share things i got from google. It teach me a lots. But actually, our proposal still not completely done yet. We need to find more about the tools used, MySQL cluster stuff etc.
Now, let's see how to share directory in ubuntu and other Linux distributions.

It is very useful to share things over network. Computer users usually share their directories inside their LAN, containing files such as documents, audio files, or movies. This post will simply make your directory shared over network to Linux and Windows client. The famous Linux program used is samba (ask google please). I'm currently using Karmic Koala (9.10) so the default setting might be somewhat different from other versions.

Samba Server
There are two ways, graphical and command line interface. We will focus on CLI.

Step 1: install samba
$ sudo apt-get install samba

Step 2: configure samba file /etc/samba/smb.conf
Make sure backup the original file
$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf

Then use any editor such as gedit, nano, etc.
$ sudo gedit /etc/samba/smb.conf

First, check these following lines are correctly in default
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)

Note: the %h will show your hostname. So, put anything you want as the server name.

If you want to share your home directory, remove the semicolon on each of this line
;[homes]
; comment = Home Directories
; browseable = no

You also can share any directory you want by creating your own entry, but make sure the directory exists. For example, you might want to share your 'video' directory on path /home/user1/video, so you need to add these lines
[my_videos]
comment = video
path = /home/user1/video
read only = yes
guest ok = yes
browseable = yes

Some explanations on this entry.
The bracket [..] is used to rename the shared directory
comment is just some note
path is the location of the share directory
read only, to disallow from being written
guest ok, allow 'guest' user to be connected without password

For example, Linux client can be connected by smbclient command with -U option which indicate as user. (will be explained in Linux and Windows Client section)
browseable, allow other users in network to see your shared directory
Some Tips:
Run this command inside share directory to make all directories, sub-directories and files are in read-only permission

For directory, (drwxr-xr-x)
$ find . -type d -exec chmod 755 {} \;

For files, (-rwr—r--)
$ find . -type d -exec chmod 644 {} \;

Linux client
For Linux client to connect to the shared directory, just go to nautilus and simply use the IP address or the hostname. Then you will see the shared directory.

Make sure you have installed smbclient package.
$ sudo apt-get install smbclient

Then, type the samba server IP address on nautilus location bar as follow:
smb://ip_address
smb://hostname

Also can be opened from web browser, but the appearance will be same like ftp

Client also can connect thorugh command line.
To list files shared directory as user 'guest'. The user should be exist
$ smbclient -L //192.168.56.1 -U guest

Direcly connect (almost similar to ftp)
$ smbclient //server/shared_directory -U user

Example,
$ smbclient //192.168.56.101/ shared_directory -U guest
Enter guest's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.4.0]
smb: \>

For Windows client
Start -> Run
Then type the IP address or hostname, also can be connected through windows explorer (same as nautilus).
It also can be opened from browser by entering server ip address
\\ip_address

Hope this will help you. Enjoy!

References:

Perl for Noob

As before in our course of study, we just familiar with C, C++ and Java. For the sake of our project, I have been exploring Perl. Noted that memcached was firstly written by Brad Fitzpatrick together with Anatoly Corobey in Perl.

This is just fast study for very very very beginners of Perl (Correct me if i'm wrong, i am a noob too) :)

PERL - Practical Extraction and Report Language


Installing PERL
Perl is nicely included on Linux and Unix, but for Windows user, refer here. I currently use Ubuntu Karmic Koala, so I checked where is my Perl located by:

whereis perl

Most of the time, it located at /usr/bin/perl but anywhere doesnt matter. But, it's important to note whereis since it will be embedded in the first line of your script:

#!/usr/bin/perl --> This line must appear in the very first line of your script except for some condition I'll explain below.

OK, next to check is the version of your Perl.

perl -v

Mine is 5.10 (latest by now). I read somewhere that version 5.6.0 isn't stable and buggy than the later versions so do update ok :)

Done with checking.

Writing PERL
Simply touch your program or Perl file by putting extension; .pl or .plx --Both ways are OK. (e.g.: touch file.pl). Then change the file mode (chmod u+x file.pl) so it's executable.

Open editor (gedit, nano, vi, pico -- any will works, but I just started to love mcedit because it's nice); mcedit file.pl

OK, like I said, your first line must be #!/usr/bin/perl BUT, if you're using Perl 5.10 like me, you could consider of using use feature ':5.10' to replace #!/usr/bin/perl. This indicate that we could use some new feature in this latest version where some reserve words are added to simplify works. Here, I will discuss some basic commands of 5.10.

Basically, there are three in total - variable types in Perl:
  • Scalar - holds single data (int, long, char, string)
  • Array - holds list for scalar (10 int, 100 char, etc)
  • Hash - hold key-pair, refer further explanation below.
  • So, let us go one by one. I promise it's simple.

    Scalar
    Define: use dollar sign ($) together with variable name. E.g.: $var, $name.
    Example: $a = "value"; $number = 1;



    Remember this rule,
    • $ for Scalar

    • @ for Array

    • % for Hash


    $calar hold single data, so to print specific data or one element in @rray or %ash, use $calar. :-)