Thursday, September 19, 2013

Connecting to a Samba Share (File sharing Linux vs Windows)

19.3.1. Command Line

To query the network for Samba servers, use the findsmb command. For each server found, it displays its IP address, NetBIOS name, workgroup name, operating system, and SMB server version.
To connect to a Samba share from a shell prompt, type the following command:

smbclient //<hostname>/<sharename> -U <username> 
 
root@itadmin-AcerPower-Series:/# clear

root@itadmin-AcerPower-Series:/# smbclient //192.168.2.100/shared -Uitadmin
Enter itadmin's password: 
Domain=[CHNSRV] OS=[Windows Server 2003 3790 Service Pack 1] Server=[Windows Server 2003 5.2]
smb: \> ls
  .                                  DR        0  Thu Sep 19 11:34:36 2013
  ..                                 DR        0  Thu Sep 19 11:34:36 2013
  .DS_Store                          AH    24580  Tue Sep 17 12:22:12 2013
  admin                               D        0  Wed Aug 14 20:11:47 2013
  kumar                               D        0  Thu Sep 12 17:27:38 2013
  shiva                               D        0  Wed Sep 18 08:47:51 2013
  siva                                D        0  Wed Sep  4 18:44:45 2013
  
  51203 blocks of size 2097152. 7692 blocks available
smb: \>






(or) Suppose your Linux machine user name is same as Network windows server user name, Here no
need -U itadmin(username)

itadmin@itadmin-AcerPower-Series:/$ smbclient //192.168.2.100/shared
Enter itadmin's password: 
Domain=[CHNSRV] OS=[Windows Server 2003 3790 Service Pack 1] Server=[Windows Server 2003 5.2]
smb: \> ls
  .                                  DR        0  Thu Sep 19 11:34:36 2013
  ..                                 DR        0  Thu Sep 19 11:34:36 2013
  .DS_Store                          AH    24580  Tue Sep 17 12:22:12 2013
  kumar                               D        0  Thu Sep 12 17:27:38 2013 
  shiva                               D        0  Wed Sep 18 08:47:51 2013
  siva                                D        0  Wed Sep  4 18:44:45 2013
  Sundar                              D        0  Wed Sep 18 17:17:51 2013
  51203 blocks of size 2097152. 7692 blocks available
smb: \> 

Replace <hostname> with the hostname or IP address of the Samba server you want to connect to, <sharename> with the name of the shared directory you want to browse, and <username> with the Samba username for the system. Enter the correct password or press Enter if no password is required for the user.
If you see the smb:\> prompt, you have successfully logged in. Once you are logged in, type help for a list of commands. If you wish to browse the contents of your home directory, replace sharename with your username. If the -U switch is not used, the username of the current user is passed to the Samba server.
To exit smbclient, type exit at the smb:\> prompt.

Copy from widows shared file to Linux machine through Linux Terminal using smbclient:

smb: \siva\> get email1.png /home/itadmin/Documents/email1.png
getting file \siva\email1.png of size 292535 as /home/itadmin/Documents/email1.png (10202.8 KiloBytes/sec) (average 7935.5 KiloBytes/sec)
smb: \siva\> 


Copy from Linux machine file to Windows shared folder through Linux Terminal using smbclient:


smb: \siva\> put /home/itadmin/Documents/siva1.png siva1.pngputting file /home/itadmin/Documents/siva1.png as \siva\siva1.png (8162.2 kb/s) (average 8527.7 kb/s)
smb: \siva\> ls
 
.                                   D        0  Thu Sep 19 15:04:06 2013
  ..                                  D        0  Thu Sep 19 15:04:06 2013
   comics                              D        0  Wed Jul 10 16:49:33 2013
  Copy of icon_helpdesk.gif           A     1657  Wed Jul  3 13:45:49 2013
  Copy of livechat.png                A    17260  Wed Jul  3 16:37:07 2013
  Elvis-Testing.avep                  A  6991460  Wed Jul 10 13:01:52 2013
  Elvis-Testing.avep-Pages.zave       A  2238570  Wed Jul 10 14:19:06 2013
  Elvis-Testing.avep-Pages.zavem      A      341  Wed Jul 10 14:19:05 2013
  email1.png                          A   292535  Mon Jul  1 12:21:58 2013
  email2.png                          A     8622  Mon Jul  1 12:30:19 2013
  email35.png                         A     7618  Mon Jul  1 12:30:35 2013
  event.png                           A     1809  Wed Sep  4 18:44:07 2013
  forum.png                           A     1668  Sat Jun 29 15:11:03 2013
  icon_helpdesk.gif                   A     1657  Wed Jul  3 13:45:49 2013
  icon_helpdesk.png                   A     4505  Wed Jul  3 13:51:57 2013
  icon_helpdesk40.png                 A     4667  Wed Jul  3 13:52:16 2013
  KalleAnka&Co 1.0.2.ipa              A 32092113  Wed Jul 10 16:23:07 2013
  live100.png                         A     7373  Thu Jul  4 13:07:07 2013
  live150.png                         A     9953  Thu Jul  4 13:06:55 2013
  live80.png                          A     6503  Thu Jul  4 13:07:17 2013
  livechat.png                        A    17260  Wed Jul  3 16:37:07 2013
  logo.gif                            A     1843  Fri Aug 16 11:26:57 2013
  logo.png                            A     7289  Thu Aug  8 18:37:02 2013
  logos.gif                           A     1780  Fri Aug 16 11:33:40 2013
  magik_pinstyle_3                    D        0  Wed Jul 24 18:48:37 2013
  nforum.png                          A     5048  Sat Jun 29 15:44:46 2013
  photo                               D        0  Mon Aug 19 13:51:38 2013
  ricon.png                           A     1959  Sat Jun 29 15:32:37 2013
  scpsmb                              D        0  Wed Sep  4 18:45:39 2013
  sforum.png                          A     1668  Sat Jun 29 15:11:08 2013
  siva2.png                           A   292535  Thu Sep 19 15:03:04 2013
  siva1.png                           A   292535  Thu Sep 19 15:04:06 2013
  slide                               D        0  Wed Jul 31 16:07:19 2013
  sundarnew.png                       A     6925  Fri Aug  9 11:05:45 2013
  Thumbs.db                         AHS    82432  Mon Aug 19 13:51:40 2013
  webim                               D        0  Fri Aug  2 11:47:46 2013

        51203 blocks of size 2097152. 7692 blocks available

 



19.3.2. Mounting the Share

Sometimes it is useful to mount a Samba share to a directory so that the files in the directory can be treated as if they are part of the local file system.
To mount a Samba share to a directory, create create a directory to mount it to (if it does not already exist), and execute the following command as root:
 
 
mount -t cifs -o <username>,<password> //<servername>/<sharename> /mnt/point/


This command mounts <sharename> from <servername> in the local directory /mnt/point/. For more information about mounting a samba share, refer to man mount.cifs.

Wednesday, September 18, 2013

Zend framework 2.2 - ZfcUser module Configuration

Installing and configuring ZfcUser module and Doctrine2

Next task is to install ZfcUser module which will deal with User management in our Blog application and Doctrine2 which will be used as ORM (Object Relational Mapper). This is very easy, we just need to add some lines in our composer.json file and run update command. So, open your composer.json file (in project root folder) and make it look like this (I added other dependencies like Doctrine2 and Zend Developer tools, so we have everything we need to work with):
/composer.json
1
2
3
4
5
6
7
8
9
10
{
    "name": "zendframework/skeleton-application",
    "description": "Skeleton Application for ZF2",
    "license": "BSD-3-Clause",
    "keywords": [
        "framework",
        "zf2"
    ],
    "homepage": "http://framework.zend.com/",
    "require": {
        "php": ">=5.5.3",
        "zendframework/zendframework": ">2.2.0rc1",
        "zendframework/zend-developer-tools": "dev-master",
        "zendframework/zftool": "dev-master",
        "zf-commons/zfc-user": "dev-master",
        "doctrine/doctrine-orm-module": "0.7.*",
        "zf-commons/zfc-user-doctrine-orm": "dev-master"
}
}
Save the file and run (from command line):



itadmin@itadmin-AcerPower-Series:/var/www/pod$ composer.phar update


itadmin@itadmin-AcerPower-Series:/var/www/pod$ composer.phar update
Loading composer repositories with package information
Updating dependencies (including require-dev)

  - Installing zf-commons/zfc-base (v0.1.2)
    Loading from cache

  - Installing zf-commons/zfc-user (dev-master fbbe5fd)
    Cloning fbbe5fdeabd9229bf7d1328358c2d95538a6081e

  - Installing doctrine/lexer (v1.0)
    Loading from cache

  - Installing doctrine/annotations (v1.1.2)
    Loading from cache

  - Installing doctrine/collections (v1.1)
    Loading from cache

  - Installing doctrine/cache (v1.1)
    Loading from cache

  - Installing doctrine/inflector (v1.0)
    Loading from cache

  - Installing doctrine/common (v2.4.1)
    Loading from cache

  - Installing doctrine/dbal (v2.4.0)
    Loading from cache

  - Installing symfony/console (v2.3.4)
    Loading from cache

  - Installing doctrine/orm (v2.4.0)
    Loading from cache

  - Installing doctrine/doctrine-module (0.7.2)
    Loading from cache

  - Installing doctrine/doctrine-orm-module (0.7.0)
    Loading from cache

  - Installing zf-commons/zfc-user-doctrine-orm (dev-master 08be7b2)
    Cloning 08be7b2a5e1ee31a3907582261c113531d2bf964


symfony/console suggests installing symfony/event-dispatcher ()
doctrine/orm suggests installing symfony/yaml (If you want to use YAML Metadata Mapping Driver)
doctrine/doctrine-module suggests installing doctrine/data-fixtures (Data Fixtures if you want to generate test data or bootstrap data for your deployments)
doctrine/doctrine-orm-module suggests installing doctrine/migrations (doctrine migrations if you want to keep your schema definitions versioned)
Writing lock file
Generating autoload files


Let me explain what just happened. Composer just installed all those modules into our project’s vendor folder. Well, for them to work with our application, we need to tell the application they exist, so it can use them properly.
Open /config/application.config.php and let us add those modules so we can use them:
/config/application.config.php
1
2
3
4
5
6
7
8
9
10
...
'modules' => array(
        'Application',
        'DoctrineModule',
        'DoctrineORMModule',
        'ZfcBase',
        'ZfcUser',
        'ZfcUserDoctrineORM',
    ),
...
If you point your browser to zf2blog.home/user/register and try to register, you will see a PDO exception that it can not connect to the database. Now comes the fun part …
First, create a new database for this and call it zf2blogtutorial (or whatever you want). After that, copy /config/autoload/local.php.dist to /config/autoload/local.php and add this to it:
/config/autoload/local.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// ...
'doctrine' => array(
        'connection' => array(
                'orm_default' => array(
                        'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
                        'params' => array(
                                'host'     => 'localhost',
                                'port'     => '3306',
                                'user'     => '****',
                                'password' => '****',
                                'dbname'   => 'zf2blogtutorial',
                            )
                    )
            )
    ),
Replace username, password, dbname and other things according to your setup. If you try to register now, you will get this exception:
1
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'zf2blogtutorial.user' doesn't exist
Well, of course it doesn’t exist, as we didn’t create it. But, close your PHPMyAdmin, as you don’t need it.
Doctrine ORM module for Zend Framework 2 comes with handy tools which will help us with creating our application from top down. What does this mean?
Well, you first create an Entity and then generate a database schema. We did not create an Entity for ZfcUser, as it already has one included in it’s Doctrine module. So, let’s create the schema.
So, in your command line enter this in project root:
1
vendor/bin/doctrine-module orm:validate-schema
This just validates our database schema and will output something along this:
1
2
3
$ vendor/bin/doctrine-module orm:validate-schema
[Mapping]  OK - The mapping files are correct.
[Database] FAIL - The database schema is not in sync with the current mapping file.
To actually generate the schema, run this:
1
vendor/bin/doctrine-module orm:schema-tool:update --force
That’s it, you now have a user table in the database and a working Zend Framework2/Doctrine2 based user management… Go ahead and try to register now by going to zfblog.home/user/register.
It is working! Woot! Don’t worry about the looks of ZfcUser screens, that is because Skeleton application is using Twitter Bootstrap 3.0 and ZfcUser 2.*. We will fix that in next part.

Enabling ZendDeveloperTools

Let’s finish today’s session by enabling the handy Zend Developer tools. Open your /config/application.config.php and add Zend Developer Tools to the module list:
/config/application.config.php
1
2
3
4
5
6
7
8
9
'modules' => array(
        'ZendDeveloperTools',
        'Application',
        'DoctrineModule',
        'DoctrineORMModule',
        'ZfcBase',
        'ZfcUser',
        'ZfcUserDoctrineORM',
    ),
Now, copy /vendor/zendframework/zend-developer-tools/config/zenddevelopertools.local.php.dist to /config/autoload/zenddevelpertools.local.php
If everything is ok, you should see the toolbar on bottom of your application if you refresh the browser.