Author: Om Prakash Singh

  • Configure a Physical Interface After System Installation

    * Determine the IPv4 addresses that you want to use for the additional interfaces.

    * Ensure that the physical interface to be configured has been physically installed onto the system.

    * If you have just installed the interface, perform a reconfiguration boot before proceeding with the next task.

    Determine which interfaces are currently configured on the system.
    # dladm show-link

    Configure and plumb each interface
    # ifconfig plumb up

    for eg. for interface name pcn0 type:
    # ifconfig pcn0 plumb up

    Assign an IP address.
    # ifconfig netmask +

    for eg. you would do:
    # ifconfig pcn0 192.168.84.3 netmask + 255.255.255.0

    Verify that the newly configured interfaces are plumbed and configured, or “UP.”
    # ifconfig -a

    Check the status line for each interface that is displayed. Ensure that the output contains an UP flag on the status line, for example:
    pcn0: flags=1000843 mtu 1500 index 2

    To make the interface configuration persist across reboots, perform the following steps:

    1. Create an /etc/hostname.interface file for each interface to be configured. For example, to add a pcn0 interface, you would create the following file:
    # vi /etc/hostname.pcn0

    2. Edit the /etc/hostname.interface file.
    At a minimum, add the IPv4 address of the interface to the file.

    3. Add entries for the new interfaces into the /etc/inet/ipnodes file.

    4. Add entries for the new interfaces into the /etc/inet/hosts file.

    5. Perform a reconfiguration boot.
    # reboot — -r
    6. Verify that the interface you created in the /etc/hostname.interface file has been configured.
    # ifconfig -a

  • AIX Training Center in Mumbai

    Dear Friends,

    We have been working in UNIX platform since the last 3-4 years and we realized that industry is in need of quality training in IBM AIX. Till now we could’nt find any IBM AIX Training centers in our premises. So we decided to take the responsibility of imparting the knowledge we earned to the upcoming unix generation.

    Here starts our training centre.

    Shubham Computers
    Opposite RANA Towers
    Kalwa.

    We will be very glad and thankful if you pass this info to your friend circle.

    Sijo James
    sijojamesn@gmail.com

    *****The pessimist sees difficulty in every opportunity. The optimist sees opportunity in every difficulty****

  • Ethernet Bonding

    First thing to know is that this stuff is in the kernel and there is a good doc in your kernel source tree under Documentation/networking/bonding.txt this has a lot more detail than I am going to provide here.

    A virtual network interface gets created, bond0 in my case, this gets done in /etc/modules.conf

    alias bond0 bonding
    options bond0 miimon=100 mode=balance-rr

    The above creates the bond0 interface and sets some options. It will check the MII state of the card every 100 milliseconds for state change notification. It will also use their round robin balancing policy. More on the various options for these and many more in bonding.txt

    RedHat’s RC scripts support this bonding configuration without much modification though there aren’t any GUI tool to configure it. RedHat network config gets stored in /etc/sysconfig/network-scripts/ifcfg-int

    You need to create a config file for the bond0 interface, ifcfg-bond0

    DEVICE=bond0
    BOOTPROTO=none
    ONBOOT=yes
    IPADDR=192.168.70.101
    NETMASK=255.255.255.0
    NETWORK=192.168.70.0
    BROADCAST=192.168.70.255
    GATEWAY=192.168.70.1

    And for each network card that belongs to this group you need to modify the existing files to look more or less like this:

    DEVICE=eth0
    BOOTPROTO=none
    ONBOOT=yes
    TYPE=Ethernet
    MASTER=bond0
    SLAVE=yes

    Once you created these for each of your ethernet cards you can reboot or restart your networking using service network restart and you should see something like this:

    bond0     Link encap:Ethernet  HWaddr 00:0D:60:9D:24:68
    inet addr:192.168.70.101 Bcast:192.168.70.255 Mask:255.255.255.0
    UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
    RX packets:58071 errors:0 dropped:0 overruns:0 frame:0
    TX packets:1465 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:4315472 (4.1 Mb) TX bytes:120360 (117.5 Kb)

    eth0 Link encap:Ethernet HWaddr 00:0D:60:9D:24:68
    UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
    RX packets:26447 errors:0 dropped:0 overruns:0 frame:0
    TX packets:1262 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:1992430 (1.9 Mb) TX bytes:95078 (92.8 Kb)
    Interrupt:16

    eth1 Link encap:Ethernet HWaddr 00:0D:60:9D:24:68
    UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
    RX packets:31624 errors:0 dropped:0 overruns:0 frame:0
    TX packets:203 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:2323042 (2.2 Mb) TX bytes:25282 (24.6 Kb)
    Interrupt:17

    You can tcpdump the individual interfaces to confirm that traffic goes shared between them, weirdly though on my machine my tcpdump on eth0 and eth1 does not show incoming traffic just outgoing, dumping bond0 works a charm though.

    To test it I just turned the power off to one of my switch modules, the networking dies for a couple of seconds but soon resumes without a problem. I am sure I could tweak the times a bit but for now this is all I need.

  • UNIX Questions and Answers

    UNIX Questions and Answers

    Most answers refer to Solaris 2.x systems


    Hardware Issues

    Configuration Issues

    NFS Issues

    General Issues

    Software issues

    Networking issues

    Security issues

    Firewall issues

    Performance tuning issues

    E10000


    How do i view and set the open boot prom settings

    From the unix prompt use eeprom. From the ok prompt use devaliases, printenv, nvedit and nvalias.

    Back to Contents


    How do i stop people logging in ?

    If the file /etc/nologin exists then only root can login. Whatever the contents of the file are are displayed to whoever is attempting a login.

    Back to Contents


    How do i boot over the net via a different interface

    From the ok prompt type


    show-nets

    This will display the possible interfaces. Select an interface then type


    nvalias net ^Y

    This will set the selected interface to the alias net.

    Back to Contents


    How do I solve Keyboard Translation
    Errors?

    The most likely cause of this is an incorrect XKeysymDB file or an
    incorrect pointer to it. Try looking in /usr/openwin/lib or
    /usr/openwin/lib/X11. The Installation and Administration
    manual for the application should have some information about this.

    If logged in as root from another system try
    /usr/openwin/bin/kbd-mode -a

    Back to Contents


    Why do I get the error Stale NFS
    Handle?

    This was probably caused by a directory being deleted while another
    system was NFS mounted into it. The best action is to cd
    out of the directory and perform a umount. Sometimes
    halting and restarting the automount daemon is reqired, for example:

    /etc/rc2.d/S74autofs [stop/start]. or

    /etc/init.d/nfs.server [stop/start].

    If none of these work, then it might have to be a reboot.

    Back to Contents


    How can I configure new devices without
    rebooting?

    It is advisable to halt and power off the system whenever you attach new
    scsi devices. However, if this is not possible try this:

    1. If possible stop the system with < STOP > < A >, connect the device and
      type go
    2. Type:

      drvconfig

      devlinks

      tapes / disks (depending on the device attached)

    Back to Contents


    What does the error RPC Program not registered
    mean?

    Probably the NFS server has got itself a little confused. Check there is
    an entry in /etc/dfs/dfstab

    Try stopping and restarting the daemon, for example:

    /etc/init.d/nfs.server [stop/start]

    If this doesn’t work, try a reboot.

    Back to Contents


    How do I tar to a remote system?

    Tar to a remote drive:

    tar cvfb - 20 filenames | rsh host dd of=/dev/rmt0 obs=20b

    Tar from a remote drive:

    rsh -n host dd if=/dev/rmt0 bs=20b | tar xvBfb - 20
    filenames

    Copying directory trees:

    cd fromdir; tar cf - . | (cd todir; tar xfBp -)

    Copy directory tree to another host:

    cd fromdir; tar cf - * | rsh host "cd todir ; tar xf -"

    Back to Contents


    How do I copy directory structure with cpio?

    Use find and cpio

    cd fromdir; find . -name -print | cpio -pmd /todir

    Back to Contents


    How can I increase swap space?

    Swapping onto a file system is faster than swapping to a file. If
    possible, partition an area of disk as the additional swap area.
    Otherwise, create a swap file with the command mkfile (see
    man page), for example:

    mkfile 100m swappy

    Add the swap area with the command swap (see man page) for
    example:

    swap -a swappy

    Back to Contents


    Cetting a non sun cdrom to work

    The main secret is to get the cdrom to talk in 512 byte sectors. If the cdrom does this then it will work.

    Saturn.tlug.org This is a good FAQ to start with or try the Sun CD FAQ. or of course your manafacturs instruction book.

    Back to Contents


    How do I find out the speed of my machine?

    Use the command psrinfo -v

    Back to Contents


    How do I carry out NFS performance tuning?

    Start with the SMCC NFS Server Performance and Tuning Guide

    This is a pkgadd of SUNWabhdw and adds the guide to answerbook

    SUNWadhdw is on the “Software Supplement for the Solaris 2.6 Operating
    Environment” CD.

    Use the command /usr/bin/nfsstat to view the NFS statistics

    Back to Contents


    What hardware diagnostic programs are
    there?

    Use SunVTS. This is available on the Software Supplement for the Solaris
    2.6 Operating Environment CD.

    If you have a fibre problem then try STORtools. You will probably need
    a fibre loopback cable in order to get the most out of this.

    Back to Contents


    How do I make a file system bootable after a
    restore?

    If you have reinstalled the / file system from backup (ie
    ufsdump) then you will need to recreate the boot block on
    the boot disk. This is done using the installboot command (
    read the man page ), for example:
    installboot
    /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c?t?d?s?

    Back to Contents


    How do I dual host a system?

    1. Install the network card and cable it up. Make sure that any
      jumpersettings are set.
    2. Add the second interface name and IP to the hosts file and Name
      Service.
    3. Edit the file /etc/hostname.interface where
      interface is the type, for example, le1 hme1
    4. Reboot the sysyem or manually set it up with ifconfig
      (see manual page)

      ifconfig hmse1 plumb

      ifconfig hmse1 IP-Address

    You may also need to perform an add route (see manual page)

    route add net destination gateway metric
    Back to Contents


    How do I find out what patches are on a
    system?

    Use the command showrev -p

    Use the command patchdiag -l this also lists patches you should install.
    You
    will need do download a copy from sun. If you have access try
    downloading from http://sunsolve.sun.com.sunsolve/patchdiag this is a
    tar compressed file.
    There is a tar file of patchdiag on this site but i have not set up ftp at the moment of writing this page.

    Back to Contents


    How much memory does my system have?

    Use the command prtconf and grep for the
    memory, for example:

    prtconf |grep Memory

    If you need to know what memory sims are in what slot use the perl script from Micron. A sample script is.

    Sample of Memcom Script Remeber to get an official copy.

    Back to Contents


    How can I play audio CDs and MP3 on my system?

    For CD

    Download a copy of Workman from Midwinter.com

    If you have problems with sound then it might be that you cannot use
    the internal sound card and will have to plug speekers int the cd
    plater itself.

    However this might work

    edit /etc/rmmount.conf and add

    action cdrom action_workman.so

    /usr/local/bin/workman

    try this before any other cdrom actions

    For MP3 files look to the following site

    Opensound

    If you wish to read an audio cd under solaris and copy the files to
    wav, mpeg, etc then you need the program galette available from Galette

    Once you have the files stored as wav files you need to convert them to MP3 using Blade

    Back to Contents


    What useful Solaris commands are there
    for finding out what’s going on?

    This is a definite RTFM, but start with these:

    ps, iostat, nfsstat,
    sar, netstat, snoop,
    mpstat, rpcinfo, truss,
    prtdiag, crash, psrinfo,
    prtconf, arp and uptime

    try looking at the enclosed perl script to get an idea of wht to look for.

    Perl script to look at how the system is performing

    Back to Contents


    How do I connnect a Zip Drive?

    Helpful info from Iomega at

    Zip Drives on Sun

    basically edit /etc/format.dat and add :-

    disk_type = "Zip" \
    : ctlr = SCSI\
    : ncyl = 2046 : acyl = 2 : pcyl = 2048 : nhead = 2\
    : nsect = 40 : rpm : bpt = 20480

    partition = "Zip" \
    : disk = "Zip" : ctlr = SCSI \
    : 2 = 0, 192480 : 2 = 0, 1159168

    Jazz Drives on Sun
    Back to Contents


    Why do I get .nfsxxxx files on NFS mounted
    filesystems?

    These are temporary files used by the system to guarantee data
    reliability over the unreliable nfs mount. These can be left behind by
    an application or process that has terminated abnormally.

    Back to Contents


    How do I stop printing a banner page?

    If this is for just one print, use the -o option, for
    example:

    lp -o nobanner name

    Otherwise, edit the file /etc/lp/interfaces/printername and
    change the option nobanner to yes.

    Back to Contents


    How can I find out and set shared memory?

    Use the command ipcs to view what is set.

    If you wish to change them, edit /etc/systems and reboot
    with -r.

    Typically, you would edit one or more of msgsys,
    semsys, shmsys.

    Check out the sun docunemt on shared memory sunworld document on shared memory

    Back to Contents


    Number of inodes used and free

    use the command df -F ufs -o i

    Back to Contents


    What block size is my file system

    use the command mkfs -m /dev/dsk/c?t?d?s?

    look at the bsize value (you need to be root to run this)

    Back to Contents


    How do I find out which clients are NFS mounting
    a server?

    Use the command dfmounts

    Back to Contents


    How do I get rid of defunct processes?

    These are caused by an application or process crashing, terminating
    abnormally, getting confused
    etc. Look for the parent process of these and kill or refresh it.

    Back to Contents


    What version of bind am I running?

    try /usr/ccs/bin/what /usr/sbin/in.named |grep named

    Solaris 2.6 bind 4.9.4-P1 

    Solaris 2.5.1 bind 4.9.3-P1

    Back to Contents


    How can I change the hostid?

    There are several ways to do this, try:

    Squirrel
    FAQ

    Back to Contents


    Why am I having problems mounting a floppy?

    Back to Contents


    How do I configure dtlogin for other window managers?

    You need to create an Xresourses file to start the window manager.

    cd /usr/dt/config/C/Xresources.d
    copy Xresources.ow to a new name of your window manager ie Xresourses.kde.

    Now edit your Xresources.kde file. Making the changes for your window manager

    I.e.

    Dtlogin*altDtsIncrement: True

    Dtlogin*altDtName: KDE Desktop

    Dtlogin*altDtKey: /usr/local/kde/bin/startkde

    Dtlogin*altDtStart: /usr/local/kde/bin/startkde

    Dtlogin*altDtLogo: KDElogo

    copy the KDE logo KDElogo.pm to /usr/dt/appconfig/icons/C/KDElogo.pm

    Back to Contents


    Dual headed sun system

    Try looking at infodoc 11669.

    OPenwin
    openwin -dev /dev/cgsix0 left -dev /dev/cgsix1 right

    CDE

    edit Xservers with

    :0 Local local_uid@console root /usr/openwin/bin/Xsun :0 -dev /dev/cgsix0 -dev /dev/cgsix1 right

    How do I configure CDE?

    The control panel

    In this example I will add the workman cd player to the control panel.

    Copy the CDE config file dtwm.fp from /usr/dt to your homedirectory/.dt/types

    Create an icon and place it in ~.dt/icons. it should have a .m.pm extension.

    ie. Player.m.pm

    Edit the dtwm.fp file
    and add following. In this case I am adding it between the help and
    trash areas. the position hints is 13 so it should appear towards the
    right between the help (book) icon and the trash (waste bin) icon.

    CONTROL cdplayer
    {
    TYPE icon
    CONTAINER_NAME Top
    CONTAINER_TYPE BOX
    POSITION_HINTS 13
    PUSH_ACTION cdplayer
    ICON Player
    }

    Create a file for what to do when the button is pushed. In the example
    it is called cdplayer. The file has a .dt extension IE cdplayer.dt. The
    contents of this file are.

    ACTION cdplayer
    {
    LABEL cdplayer
    TYPE COMMAND
    EXEC_STRING /usr/local/bin/workman
    ICON somename
    WINDOW_TYPE NO_STDIO
    DESCRIPTION starts cdplayer
    }

    The mouse menu

    copy the mouse menu from /usr/dt/config/C/sys.dtwmrc to you home directory ~/.dt/types/dtwmrc.

    edit the dtwnrc file adding or removing mouse options. In this case we will create an applications submenu and put the cdplayer in that submenu.

    Firstly add the applications menu to the main menu by instering a line like this

    "Applications" f.menu apps
    in the DtRootMenu section. approx line 38
    then hgo to the botton of the file and create the application menu. ie.

    Menu apps
    {
    APPLICATIONS" f.title
    "CD Player" f.exec "/usr/local/bin/workman"
    }

    Back to Contents


    How do I stop colour flashing?

    Back to Contents


    How do i communicate between systems using scokets

    There are several ways to do this.  Below is an example of a perl program that sends the string 
    "hey now hey now now. Sing this corrosion to me " to port 1250 on a system called mission.
    On the mission server there is a program which is called via inetd that picks up this incomming
    line and writes it to a file /tmp/outfile. the program is called read-socket.pl


    Sample /etc/inetd.conf entry
    read-socket stream tcp nowait neville /export/home/neville/read-socket.pl

    Sample /etc/services entry
    read-socket 1250/tcp

    Sample sending program (send-line.pl)
    #!/usr/bin/perl
    use IO::Socket;
    $sock = new IO::Socket::INET (PeerAddr => 'mission',
    PeerPort => 1250,
    Proto => 'tcp',
    );
    die "Socket could not be created. Reason $! \n" unless $sock;
    print $sock "hey now hey now now. Sing this corrosion to me\n";
    close ($sock);

    Sample sending program (send-file.pl)
    #!/usr/bin/perl
    use IO::Socket;
    my $FILETOSEND = "/tmp/crappy";
    open (INFILE, $FILETOSEND) || die "cannot open file: $FILETOSEND \n";
    $sock = new IO::Socket::INET (PeerAddr => 'mission',
    PeerPort => 1250,
    Proto => 'tcp',
    );
    die "Socket could not be created. Reason $! \n" unless $sock;
    #now do the sending
    select ($sock);
    while (< INFILE > )
    {
    print $_;
    }
    close ($sock);
    close ($INFILE);

    Sample reading program (read-socket.pl)
    #!/usr/bin/perl
    open (OUT, ">/tmp/outfile") || die "cannot open output file \n";
    print OUT < STDIN >
    close (OUT);

    Sample reading program as a deamon (not using /etc/system and /etc/services)
    #!/usr/ bin/perl
    use IO::Socket;
    $sock = new IO::Socket::INET (PeerPort => 1250,
    Proto => 'tcp',
    Listen => 10,
    Reuse => 1,
    );
    die "Cannot start deamon on socket Reason $! \n" unless $sock;
    while ($this_connection = $server->accept())
    {
    print $this_connection;
    }
    close ($sock);

    Back to Contents


    How do i find out what resources a running process is using

    Use the proc commands below and others. 
    /usr/proc/bin/pmap -x $PID (see what memory is used)
    /usr/proc/bin/pldd $PID (see what shared libraries are used)
    /usr/proc/bin/pwdx $PID (see what the working directory is)

    Download a copy of memtool from Sun. ftp://playground.sun.com/pub/memtool

    Back to Contents


    How can i program in curses?

    If you plan to use curses to do an interface try looking at this site. It might make life easier for you

    SCRMGR curses interface

    Back to Contents


    Get system hardware configuration

    Run the command /usr/platform/arch-type/sbin/prtdiag -V

    Back to Contents


    Run jobs in background during times of light system loading

    Try this site
    Idalize program

    Back to Contents


    System stats in html format

    Get a copy of DHTMLR (Do HTML Report) forom the belew site.

    this is a shell script that gets system info and builds web pages.
    DHTMLR program from the Sunsolve site Belgium

    Back to Contents


    Graphical FTP front ends for X

    There are quite a few graphical front ends for ftp available. Below are
    a couple of them. Also try looking at the KDE and GNOME sites.

    GNU licenses Graphical ftp

    llnl xdir

    Back to Contents


    Security issues and Solaris

    Um yes well probably quite a few bits to add here. lets try

    Back to Contents


    Info on old sun hardware

    This is a 7 part document

    Back to Contents


    Microsoft Internet Explorer and Outlook express for Solaris

    Download it from

    Internet Explorer

    Back to Contents


    How to prevent stack overflow

    add noexec_user_stack to the file /etc/system

    Back to Contents


    How to tell if you are in 32 or 64 bit mode

    use the command isainfo -v

    Back to Contents


    Disable CDROM popup under CDE

    comment out the stdvolcheck stuff from

    /usr/dt/config/sessionetc

    Back to Contents


    Stop FTP users from logging in

    Set their shell in /etc/passwd to /bin/false. Then edit /etc/shells and add a line /bin/false.

    Back to Contents


    Check for disk errors

    Use the commands

    iostat -e or iostst -E or netstat -k

    Back to Contents


    Firewall information

    Probably a lot to say here lets start with

    Back to Contents


    Performance tuning information

    Probably a lot to say here lets start with

    Back to Contents


    Xerox NeWSprinter20 Toner

    As far as i can tell this is the toner Xerox XP 15/20

    Back to Contents


    Connecting a Sun Monitor to a PC

    You will need to get a fixed frequency card. Look at this site.

    Monitor world

    Back to Contents


    Connecting a PC Monitor to a Sun

    You will need to get a 13W3 to VGA connector.

    Some monitors (Notably Sony based ones) will just work. Plug it it and reboot.

    If not you will need to set up your monitor configurations at the NVRAM.

    To set the NVRAM you need the following info.

    Back to Contents


    Pinouts for Scsi, Video, Audio, Parallel, serial, etc

    A good site to start looking at is:

    Pinouts.com

    Back to Contents


    What is my screen resolution, etc

    Under the X11 environment run the command xdpyinfo. If not running X
    then you will need to look at one of the frame buffer config commands.

    Unfortunatly these are framebuffer specific but try

    System/Framebuffer	Command

    Sparc4, Sparcx5 tcx tcxconfig
    x86 kdmconfig
    Ultra creator ffbconfig
    Ultra PGX/M64 m64config
    sparc ZX/TZX leoconfig
    sparc SX cg14config

    If you do not have the OS running but are at the OK pronpt try using nvedit.

    Back to Contents


    Upper to lower case traanslation using tr

    #!/bin/sh
    #translate filenames in uppercase to lowercase

    for FILE in `ls`
    do
    NEWNAME=`echo $FILE |tr [A-Z] [a-z]`
    mv $FILE $NEWNAME
    done


    Back to Contents


    How to create solaris pkg’d

    read this good article.

    creating solaris packages

    Back to Contents


    Mb/Mhz rpm rule of thumb

    A vague rule of thumb when looking at disk arrays is MB transfered is 10% of Mhz

    for every 1000 rpm of disk you will get about 9 I/O’s second therefore a 10,000rpm disk will have 90 I/O second

    If these are in a stripe configuration of 5 working disks the the throughput

    could be 400 I/O second

    At the time of writing a fully populated D1000 could yeald up to 3000 I/O second

    Back to Contents


    Online & Offline processors and what running on a processor

    useful commnads are mpstat, psrinfo, psrset, pbind

    Back to Contents


    Rename an e10000 domain

    Take a look at this page to show how to remane a domain. The main thing
    to remember is to rename the domain on the ssp as well as the domain
    itself.
    Renaming an E1000 Domain

    Back to Contents


    geovisit();
    setstats
    1

    Powered by ScribeFire.

  • Unix Interview Questions???

    Linux admin interview questions

    1. How do you take a single line of input from the user in a shell script?
    2. Write a script to convert all DOS style backslashes to UNIX style slashes in a list of files.
    3. Write
      a regular expression (or sed script) to replace all occurrences of the
      letter ‘f’, followed by any number of characters, followed by the
      letter ‘a’, followed by one or more numeric characters, followed by the
      letter ‘n’, and replace what’s found with the string “UNIX”.
    4. Write a script to list all the differences between two directories.
    5. Write a program in any language you choose, to reverse a file.
    6. What are the fields of the password file?
    7. What does a plus at the beginning of a line in the password file signify?
    8. Using the man pages, find the correct ioctl to send console output to an arbitrary pty.
    9. What is an MX record?
    10. What is the prom command on a Sun that shows the SCSI devices?
    11. What is the factory default SCSI target for /dev/sd0?
    12. Where is that value controlled?
    13. What happens to a child process that dies and has no parent process to wait for it and what’s bad about this?
    14. What’s wrong with sendmail? What would you fix?
    15. What command do you run to check file system consistency?
    16. What’s wrong with running shutdown on a network?
    17. What can be wrong with setuid scripts?
    18. What value does spawn return?
    19. Write
      a script to send mail from three other machines on the network to root
      at the machine you’re on. Use a ‘here doc’, but include in the mail
      message the name of the machine the mail is sent from and the disk
      utilization statistics on each machine?
    20. Why can’t root
      just cd to someone’s home directory and run a program called a.out
      sitting there by typing “a.out”, and why is this good?
    21. What is the difference between UDP and TCP?
    22. What is DNS?
    23. What does nslookup do?
    24. How do you create a swapfile?
    25. How would you check the route table on a workstation/server?
    26. How do you find which ypmaster you are bound to?
    27. How do you fix a problem where a printer will cutoff anything over 1MB?
    28. What is the largest file system size in solaris? SunOS?
    29. What are the different RAID levels?

    Interview questions for Linux admin

    1. Advantages/disadvantages of script vs compiled program.
    2. Name a replacement for PHP/Perl/MySQL/Linux/Apache and show main differences.
    3. Why have you choosen such a combination of products?
    4. Differences between two last MySQL versions. Which one would you choose and when/why?
    5. Main differences between Apache 1.x and 2.x. Why is 2.x not so popular? Which one would you choose and when/why?
    6. Which Linux distros do you have experience with?
    7. Which distro you prefer? Why?
    8. Which tool would you use to update Debian / Slackware / RedHat / Mandrake / SuSE ?
    9. You’re asked to write an Apache module. What would you do?
    10. Which tool do you prefer for Apache log reports?
    11. Your portfolio. (even a PHP guest book may work well)
    12. What does ‘route’ command do?
    13. Differences between ipchains and iptables.
    14. What’s eth0, ppp0, wlan0, ttyS0, etc.
    15. What are different directories in / for?
    16. Partitioning scheme for new webserver. Why?

    Unix/Linux programming interview questions

    Question 1: What is the major advantage of a hash table? (Asked by Silicon Magic Corp. people)

    Answer:
    The major advantage of a hash table is its speed. Because the hash
    function is to take a range of key values and transform them into index
    values in such a way that the key values are distributed randomly
    across all the indices of a hash table.

    Question 2: What are the techniques that you use to handle the collisions in hash tables?(Asked by Silicon Magic Corp. people)

    Answer:
    We can use two major techniques to handle the collisions. They are open
    addressing and separate chaining. In open addressing, data items that
    hash to a full array cell are placed in another cell in the array. In
    separate chaining, each array element consist of a linked list. All
    data items hashing to a given array index are inserted in that list.

    Question 3: In Unix OS, what is the file server? (Asked by Silicon Magic Corp. people)

    Answer: The file server is a machine that shares its disk storage and files with other machines on the network.

    Question 4: What is NFS? What is its job?(Asked by Silicon Magic Corp. people)

    Answer:
    NFS stands for Network File System. NFS enables filesystems physically
    residing on one computer system to be used by other computers in the
    network, appearing to users on the remote host as just another local
    disk.

    Question 5: What is CVS? List some useful CVS commands.(Asked by Silicon Magic Corp.people)

    Anser:
    CVS is Concurrent Version System. It is the front end to the RCS
    revision control system which extends the notion of revision control
    from a collection of files in a single directory to a hierarchical
    collection of directories consisting of revision controlled files.
    These directories and files can be combined together to form a software
    release.
    There are some useful commands that are being used very often. They are

    cvs checkout
    cvs update
    cvs add
    cvs remove
    cvs commit

    Unix/Linux administration interview questions

    What is LILO?

    LILO
    stands for Linux boot loader. It will load the MBR, master boot record,
    into the memory, and tell the system which partition and hard drive to
    boot from.

    What is the main advantage of creating links to a file instead of copies of the file?

    A:
    The main advantage is not really that it saves disk space (though it
    does that too) but, rather, that a change of permissions on the file is
    applied to all the link access points. The link will show permissions
    of lrwxrwxrwx but that is for the link itself and not the access to the
    file to which the link points. Thus if you want to change the
    permissions for a command, such as su, you only have to do it on the
    original. With copies you have to find all of the copies and change
    permission on each of the copies.

    Write a command to find all of the files which have been accessed within the last 30 days.

    find / -type f -atime -30 > December.files

    This
    command will find all the files under root, which is ‘/’, with file
    type is file. ‘-atime -30′ will give all the files accessed less than
    30 days ago. And the output will put into a file call December.files.

    What is the most graceful way to get to run level single user mode?

    A: The most graceful way is to use the command init s.
    If you want to shut everything down before going to single user mode then do init 0 first and from the ok prompt do a boot -s.

    What does the following command line produce? Explain each aspect of this line.

    $ (date ; ps -ef | awk ‘{print $1}’ | sort | uniq | wc -l ) >> Activity.log

    A:
    First let’s dissect the line: The date gives the date and time as the
    first command of the line, this is followed by the a list of all
    running processes in long form with UIDs listed first, this is the ps
    -ef. These are fed into the awk which filters out all but the UIDs;
    thes
    e UIDs are piped into sort for no discernible reason and then onto
    uniq (now we see the reason for the sort – uniq only works on sorted
    data – if the list is A, B, A, then A, B, A will be the output of uniq,
    but if it’s A, A, B then A, B is the output) which produces only one
    copy of each UID.

    These UIDs are fed into wc -l which counts the lines – in this
    case the number of distinct UIDs running processes on the system.
    Finally the results of these two commands, the date and the wc -l, are
    appended to the file “Activity.log”. Now to answer the question as to
    what this command line produces. This writes the date and time into the
    file Activity.log together with the number of distinct users who have
    processes running on the system at that time. If the file already
    exists, then these items are appended to the file, otherwise the file
    is created.

    Solaris interview questions

    1. List the files in current directory sorted by size ? – ls -l | grep ^- | sort -nr
    2. List the hidden files in current directory ? – ls -a1 | grep “^\.”
    3. Delete blank lines in a file ? – cat sample.txt | grep -v ‘^$’ > new_sample.txt
    4. Search for a sample string in particular files ? – grep .Debug. *.confHere grep uses the string .Debug. to search in all files with extension..conf. under current directory.
    5. Display the last newly appending lines of a file during appendingdata to the same file by some processes ? – tail .f Debug.logHere tail shows the newly appended data into Debug.log by some processes/user.
    6. Display the Disk Usage of file sizes under each directory in currentDirectory ? – du -k * | sort .nr (or) du .k . | sort -nr
    7. Change to a directory, which is having very long name ? – cd CDMA_3X_GEN*Here original directory name is . .CDMA_3X_GENERATION_DATA..
    8. Display the all files recursively with path under current directory ? – find . -depth -print
    9. Set the Display automatically for the current new user ? – export
      DISPLAY=`eval ‘who am i | cut -d”(” -f2 | cut -d”)” -f1′`Here in above
      command, see single quote, double quote, grave ascent is used. Observe
      carefully.
    10. Display the processes, which are running under yourusername ? – ps .aef | grep MaheshvjHere, Maheshvj is the username.
    11. List some Hot Keys for bash shell ? – Ctrl+l . Clears the Screen. Ctrl+r . Does a search in previously given commands in shell. Ctrl+u – Clears the typing before the hotkey. Ctrl+a . Places cursor at the beginning of the command at shell. Ctrl+e . Places cursor at the end of the command at shell. Ctrl+d . Kills the shell. Ctrl+z . Places the currently running process into background.
    12.  Display the files in the directory by file size ? – ls .ltr | sort .nr .k 5
    13. How to save man pages to a file ? – man <command> | col .b > <output-file>Example : man top | col .b > top_help.txt
    14. How to know the date & time for . when script is executed ? – Add
      the following script line in shell script.eval echo “Script is executed
      at `date`” >> timeinfo.infHere, .timeinfo.inf. contains date
      & time details ie., when script is executed and history related to
      execution.
    15. How do you find out drive statistics ? – iostat -E
    16. Display disk usage in Kilobytes ? – du -k
    17. Display top ten largest files/directories ? – du -sk * | sort -nr | head
    18. How much space is used for users in kilobytes ? – quot -af
    19. How to create null file ? – cat /dev/null > filename1
    20. Access common commands quicker ? – ps -ef | grep -i $@
    21. Display the page size of memory ? – pagesize -a
    22. Display Ethernet Address arp table ? – arp -a
    23. Display the no.of active established connections to localhost ? – netstat -a | grep EST
    24. Display the state of interfaces used for TCP/IP traffice ? – netstat -i
    25. Display the parent/child tree of a process ? – ptree <pid> Example: ptree 1267
    26. Show the working directory of a process ? – pwdx <pid> Example: pwdx 1267
    27. Display the processes current open files ? – pfiles <pid> Example: pfiles 1267
    28. Display the inter-process communication facility status ? – ipcs
    29. Display the top most process utilizing most CPU ? – top .b 1
    30. Alternative for top command ? – prstat -a


    Powered by ScribeFire.

  • Blogging using Livewriter.

    Indeed after doing a search in google i am able to find out a blogging tool for windows thats live write. Well, it is a product of microsoft and it is good. As i haven’t tested it a lot. but i am finding it usual till now. After downloading it from here and some teawking in my proxy settings i am able to configure it to work on my office’s XP machine.

    The original link for Live writer

  • Blogging using Livewriter.

    Indeed after doing a search in google i am able to find out a blogging tool for windows thats live write. Well, it is a product of microsoft and it is good. As i haven’t tested it a lot. but i am finding it usual till now. After downloading it from here and some teawking in my proxy settings i am able to configure it to work on my office’s XP machine.

  • Converting delimited text to Excel

    Description Google Results

    Non-technical people need to be able to work with data. They usually end up reaching for Excel or Access because we live in a malevolent Universe.

    Fortunately for the Perl kids there are a couple excellent modules already done for you by our friends John McNamara (Spreadsheet::WriteExcel) and Kawai Takanori (Spreadsheet::ParseExcel). Here is an example of how you can turn Excel into delimited plain text: converting Excel to text.

    Below is a very useful and fairly generic subroutine that can take all kinds of delimited files and turn them into straightforward Excel files.

    Code
    sub text_to_excel {
    # %args should look something like...
    # ( delimiter => "\t",
    # recordsep => "\n",
    # file => "/path/to/file.txt"
    # name => "Sheet Title" )
    # the only required args are delimiter and file

    # we require instead of use to save on if we never end up using it in
    # a larger script or CGI, but use statements at the top of the script
    # are clearer for other programmers to follow.
    require Spreadsheet::WriteExcel;
    require IO::Scalar;

    my %args = @_;
    my ( $delimiter, $recordsep, $file, $name ) =
    @args{qw( delimiter recordsep file name )};

    $delimiter and $file or
    die "Must provide at least delimiter and file as args to" .
    "delimited_text_to_excel().";

    -e $file or
    die "There is no file: $file\n";

    open F, "< ", $file or croak("Can't open $file: $!");
    $/ = $recordsep || "\n";
    my @data = < F>;
    close F;
    $/ = "\n";

    my $xls_str;
    tie *XLS, 'IO::Scalar', \$xls_str;

    my $workbook = Spreadsheet::WriteExcel->new(\*XLS) ;

    my $worksheet = $workbook->addworksheet($name||'Page 1');

    for ( my $row = 0; $row < @data; $row++ ) {

    chomp( my @line = split /$delimiter/, $data[$row] );

    for ( my $col = 0; $col < @line; $col++ ) {
    $worksheet->write_string($row, $col, $line[$col] || "");
    }
    }
    $workbook->close();
    return $xls_str;
    }
    Usage
    use MIME::Lite;  # we want to mail our excel sheet

    my $file = '/data/profit_forcast';
    my $name = '2006 Profit Forcast';
    my $xls_data = text_to_excel( file => $file,
    delimiter => "\t",
    name => $name );

    # we've done all the work. $xls_data IS the excel file in a raw
    # format. we could do anything with it now, including writing it to a
    # file, but let's send it via email.

    my $msg = MIME::Lite->new(From => 'traitor@sedition.com',
    To => 'tuna@fish.net',
    Cc => 'traitor@sedition.com',
    Subject => $name,
    Type => 'multipart/mixed')
    or die "PROBLEM opening MIME object: $!";

    $msg->attach(Type => 'application/vnd.ms-excel',
    Disposition => 'attachment',
    Data => $xls_data,
    Filename => $name . '.xls')
    or die "PROBLEM attaching Excel file: $!";

    $msg->send() or die "PROBLEM sending MIME mail: $!";

    print "Sent $name!\n";

    Discussion

    Anyone who’s dealt with delimited files before knows that this approach is missing a way to balance delimiters. Eg: If your field delimiter is a tab and your record delimiter is a newline and one of the text fields has a tab or a return character in it, it will wreck the results.

    To work with this, I often use the NULL character (””) as a field delimiter and a double (””) as a record delimiter. It will never appear in regular files so you don’t have to resort to Text::Balanced or something to ensure your data integrity.

    If you will ever have empty fields that cause the field delimiter to double up, you’ll have to get crafty and do something like “”.‘_RS_’.”” for the record separator.

    $xls_data = text_to_excel( file      => '/path/to/file.txt',
    delimiter => "",
    recordsep => "",
    name => 'NULL delimited file' );
  • Commands.txt

    solaris commands

    wipro-bby
    wiprobby

    1. /usr/bin/uname – display current OS name, versin, Architecture

    2. /usr/bin/uptime – Display how long the system has been up

    3. /usr/bin/prtconf – Displays out detailed hardware info.

    4. /usr/bin/prstat – Display active process statistics with the top process taking the most resource.

    5. /usr/platform/sun4u/sbin/prtdiag – Displays very detailes hardware info such as CPU speed, CPU chache and on what slots memory chips is installed.

    6. /usr/bin/showrev – displays machine and software version info.

    7. /usr/bin/w – display info on currently logged on users.

    8. Adding users –
    #useradd -d /export/home/username -m -s /bin/ksh
    the -m option tells the useradd command to automatically create the home directory.
    NOte: do not store user directory in /home as this directory is used by solaris automounter. the automountwer gives the user to login to many machines and automatically ahve their home directories mounted on that machines /home area.

    9. to delete users. – /usr/bin/userdel
    for eg. userdel -r – will delete the users home directory as well.

    10. psrinfo -v – processor info.

    11. netstat -rn – show the routing table.

    12. ifconfig -a – show the network iface info.

    13. explorer output
    /opt/SUNWexplo/bin/explorer – it is an executable file used to generate the explorer output
    /opt/SUNWexplo/etc/ – directory contains the explorer tar files.

    14. passwd -sa — for checking all system users password.

    Network Configuration in Solaris.
    1. to set the machine’s name – /etc/nodename

    2. using DNS edit: /etc/nsswitch.conf – look for line that starts with “hosts:”
    add “dns” to the end of the line.
    you can add the “dns” entry to the very beginning of the line, which changes the order in which solaris will do the name lookups. for eg. if you have “nis” before “dns” it will check in nis database first and try to resolve it from there and if you have files before dns it will look in the /etc/hosts files before it look in dns.

    3. adding entries in /etc/resolv.conf
    file: /etc/resolv.conf
    search domainname.com
    domain domainname.com
    nameserver ns1
    nameserver ns2

    4. adding machines info in /etc/hosts file.
    file:/etc/hosts
    ipaddr hostame

    5. edit the following files.
    /etc/net/ticlts/hosts
    /etc/net/ticolts/hosts
    /etc/net/ticotsnord/hosts

    6. editing the interface name files.
    sun systems can have multiple network cards, and each of those cards answer to a different hostname you may also have to edit a file to assign the hostname to the main network card.. you may want a single server to respond to many hostnames. the main network interface is mainly “hme0”.
    to edit interface: /etc/hostname-interface

    7. to edit netmask.
    /etc/inet/netmasks
    —————————————————————————————————————————-
    ###Exporting Display
    ##logging on server A using VNC.
    1.ssh server B
    2.xhost server B
    3.export display server A:1.0

    ##for automatic color schemes.
    ls –color=auto

    ##for time styling
    ls –time-style=+%d-%m-%y\&H%M

    ##adding alias in .profile
    alias variable=”alias name”
    here “alias name” refers to any command which can be used in conjugtion.

    ##to show all the hidden files in one directory.
    ls -d .*

    ##to remove empty lines using sed.
    sed `/^$/d’

    ##password aging script in linux if chage is not working.
    chage -l usernaem – most appropriate condition.
    else
    login as root.
    grep the users in /etc/passwd file using:
    #cut -d: -f1 /etc/passwd
    #while read line do
    #chage -l $users | grep “password expires” and line
    #disply $users- your password will expire on

    ###Configuring Network.
    ##adding net up on command line.
    #ifconfig eth0 netmask brodcast up

    ##adding the default gateway.
    #route add default gw

    ##add the nameserver entries.
    file: /etc/resolv.conf

    #nmblookup -A -d1
    #smblookup -LBC8 -I -U knopix % -w workcener name -d3

    AIX commands.
    #lscfg -vp | grep -p Cabinet — to check the cabinet no. on IBM/AIX

    #lsdev -Cc Tape — to list the tape devices.

    #rmdev -dl /dev/rmt0 — to delete rmt0 device.

    #cfgmgr -v — reread the system hardware components and if iut finds any new thing. it will configure it accordingly.

    #lsdev -Cc Tape — configure the tape drive.

    #cfgmgr — same as above

    #cat /etc/exclude.rootvg — filesystems to exclude while taking complete system backup.

    #lsvg -l rootvg — list the volumme group called as rootvg

    #smit mksysb — the smit interface to take the system backup

    #tail smit.log — tail the log files to see smit is working fine.

    #tctl -f /dev/rmt0 rewoffl -eject — this will rewind the tape and will eject the tape device.

    #restore -tvf /dev/rmt0 — to list the contents of the tape device

    #find ./log ./out -print | backup -ivf /dev/rmt0 | tee /tmp/log — to take backup of some files from ./log and ./out directory on tape device rmt0 while logging and printing the output on the screen.

    #restore -xqdvf /dev/rmt0 — restoring the complete backup on the harddisk directory. the command must be fired from the parent directory to avoid confusions in where to restore dir. name.

    ########Grub.conf — How it works
    ####Manually loading through the bootloader.

    ###This will boot the windows partition.
    rootnoverify (hd0,0)
    makeactive
    chainloader +1
    boot

    ###booting linux fron /dev/hda3 device
    root (hd0,2)
    kernel /boot/vmlinuz root=/dev/hda3 -s
    boot
    initrd /boot/initrd

    ####SHUTTING DOWN ORACLE 9i

    1. ps -aef | grep pmon -> to check orcale instances running.
    2. sqlplus /as sysdba
    3. shutdown immediately
    4. exit
    5. ps -aef | grep ora
    6. ps -aef | grep tltns
    10. kill -9 ora9ibrn

    ### copies a single 1024 block from /dev/zero(a continuous stream of zero bytes) to the file new file.
    dd if=/dev/zero of=new_file bs=1024 count=1

    iostat -En will show the devices like c0t0d0.
    product :- the last line gives the size of the disk
    mount -F hsfs /dev/dsk/c0t0d0s0 /mnt

    To see all of the slices on all of the disks the easiest thing is:
    prtvtoc /dev/rdsk/*s2
    To see all disks do this:
    format /dev/null 2>&1 redirecting the cron log to /dev/null
    hwclock –systohc sync date with hwclock

    df -g |awk ‘{print $1}’
    df -g |awk ‘{print $7}’
    df -g |awk ‘{print $4}’

    To Change the username and home permission of a user
    groupmod -n sysadmin santosh
    usermod -d /home/sysadmin -m -g sysadmin -l sysadmin santosh

    vncserver -kill :1

    psrinfo will give number of cpus in Sun Solar
    is

    OGL Backup
    cd /oraapps/oracle/prodcomn/admin

    # find ./out ./log print | backup ivf /dev/rmtn

    pscp.exe -pw ‘password’ “local machine path” user@host:/path/to/home/

    df -g refresh
    while :^Jdo^Jdf -g /kcf1dr /kcfdrvg^Jsleep 2^Jclear^Jdone

    stopping one spd device
    setsp -T -l3

    3 is SPD number.

    TIP
    tip -9600 /dev/ttya
    tip -9600 /dev/ttyb

    changing users unsuccessful login attempt using sudo
    sudo chsec -f /etc/security/lastlog -s username -a unsuccessful_login_count=0

    mount -t ext3 -o acl

    give rwx privileges to a user which does not belong to the group
    setfacl -m u:prod:rwx test
    checked the privileges using

    getfacl -a test

    opensssl rand -base64 6
    —————————————————————————-
    Restoration of backup
    # restore -xdvgf /dev/rmtn
    n-> no. of the tape drive attached.

    To rewind and ejject the tape
    # tctl -f /dev/rmtn rewoffl

    To list the contents of the tape drive
    # restore -Tl -vf /dev/rmt0

    To check user account status like locked, unlocked and when the password expires etc.. use
    on
    AIX:
    chuser

    Solaris
    passwd -s username

    Linux
    Chage -l username

  • Building DVD Images Of Ubuntu Repositories

    1 Preliminary Note

    This tutorial was inspired by an articles I read at http://cargol.net/~ramon/ubuntu-dvd-en. So many thanks to Ramon Acedo (the one who made this HowTo, originally)

    The pages are not reachable from some weeks, now. I saved the page to read it off-line. So…

    I found it useful. I hope it will be the same for you.

    2 Introduction

    This howto offers a simple way of creating DVD images of Debian or Ubuntu http/ftp repositories.

    Ubuntu doesn’t offer DVDs ready to download with its main, universe, multiverse and/or restricted repositories. With the contents of this howto you can do it yourself.

    Having the Ubuntu or Debian repositories on DVD can be useful for those users who don’t have access to the Internet where they have their Ubuntu installed but have access somewhere else to download the repository and build and burn the DVDs.

    3 Building a local mirror

    We have to install debmirror:

    sudo apt-get install debmirror

    Now we get the Ubuntu repositories in a local directory. In the example below we get main, universe and multiverse sections of the repository in the i386 architecture.

    debmirror –nosource -m –passive –host=archive.ubuntulinux.org –root=ubuntu/ –method=ftp –progress –dist=dapper –section=main,multiverse,universe –arch=i386 ubuntu/ –ignore-release-gpg

    You could change the options below as you prefer:

    • –host – the URL of the repository.
    • –dist – the distro of your OS (dapper, edgy, sarge, … ).
    • –section – the section you want to mirror locally.
    • –arch – the architecture of your box.

    4 Separating the archive into DVD-sized directories

    The repositories we got are too big (about 30Gb) to burn them to a DVD so we have to separate them into volumes.

    The tool debpartial will do it for us.

    sudo apt-get install debpartial

    We make the directory where the volumes will reside.

    mkdir ubuntu-dvd

    and we make it to construct the package descriptors to every volume.

    debpartial –nosource –dirprefix=ubuntu –section=main,universe,multiverse –dist=dapper –size=DVD ubuntu/ ubuntu-dvd/

    Now we have to put the packages into the directories debpartial has just created. The script debcopy which also comes with the debpartial package will do it. The script needs ruby.

    sudo apt-get install ruby

    If everything is ok…

    ruby debcopy ubuntu/ ubuntu-dvd/ubuntu0
    ruby debcopy ubuntu/ ubuntu-dvd/ubuntu1
    ruby debcopy ubuntu/ ubuntu-dvd/ubuntu2

    Where ubuntu/ is the directory with the complete repository created with debmirror and ubuntu-dvd/* are the directories ready to host the new DVD-ready repository.
    If we want to make soft links from the complete repository instead of copying the packages we can call debcopy with the option -l:

    ruby -l debcopy ubuntu/ ubuntu-dvd/ubuntu0
    ruby -l debcopy ubuntu/ ubuntu-dvd/ubuntu1
    ruby -l debcopy ubuntu/ ubuntu-dvd/ubuntu2

    Now every directory (ubuntu0, ubuntu1 and ubuntu2) fits on one DVD.

    5 Making iso images

    To get the directories ubuntu0, ubuntu1, ubuntu2 into an iso image ready to burn we can use mkisofs:

    mkisofs -f -J -r -o ubuntu-dvd-0.iso ubuntu-dvd/ubuntu0
    mkisofs -f -J -r -o ubuntu-dvd-1.iso ubuntu-dvd/ubuntu1
    mkisofs -f -J -r -o ubuntu-dvd-2.iso ubuntu-dvd/ubuntu2

    Now you can burn the iso images or mount them. Add them to the /etc/apt/source.list with the command:

    sudo apt-cdrom add

    Now we can verify the new repositories…

    sudo apt-get update
    sudo apt-get upgrade

    … and, if I explain in the right way, you should have your box upgraded.

    6 About the script ‘debcopy’

    I heard about someone who can not find the script debcopy, above described.
    In that case, create a new file called debcopy where you want:

    gedit /your_path_to/debcopy

    and copy the lines below inside it:

    #!/usr/bin/ruby
    #
    # debcopy - Debian Packages/Sources partial copy tool
    #
    # Usage: debcopy [-l]  
    #
    #  where  is a top directory of a debian archive,
    #  and  is a top directory of a new debian partial archive.
    #
    #  debcopy searches all Packages.gz and Sources.gz under /dists
    #  and copies all files listed in the Packages.gz and Sources.gz
    #  files into  from . -l creates symbolic links
    #  instead of copying files.
    #
    # Copyright (C) 2002  Masato Taruishi 
    #
    #  This program is free software; you can redistribute it and/or modify
    #  it under the terms of the GNU General Public License as published by
    #  the Free Software Foundation; either version 2 of the License, or
    #  (at your option) any later version.
    #
    #  This program is distributed in the hope that it will be useful,
    #  but WITHOUT ANY WARRANTY; without even the implied warranty of
    #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    #  GNU General Public License for more details.
    #
    #  You should have received a copy of the GNU General Public License with
    #  the Debian GNU/Linux distribution in file /usr/share/common-licenses/GPL;
    #  if not, write to the Free Software Foundation, Inc., 59 Temple Place,
    #  Suite 330, Boston, MA  02111-1307  USA
    #
    require 'getoptlong'
    require 'zlib'
    require 'ftools'
    $link = false
    def usage
      $stderr.puts "Usage: #{__FILE__} [-l]  "
       exit 1
    end
    def each (file, &block)
      fin = Zlib::GzipReader.open(file)
      fin.each do |line|
        yield line
      end
      fin.close
    end
    def each_file (file, &block)
      each(file) do |line|
        if /Filename: (.*)/ =~ line
          yield $1
        end
      end
    end
    def each_sourcefile (file, &block)
      dir = nil
      each(file) do |line|
        case line
        when /^Directory: (.*)$/
          dir = $1
        when /^ \S+ \d+ (\S+)$/
          yield dir + "/" + $1
        end
      end
    end
    def calc_relpath (source, dest)
      pwd = Dir::pwd
      Dir::chdir source
      source = Dir::pwd
      Dir::chdir pwd
      Dir::chdir dest
      dest = Dir::pwd
      Dir::chdir pwd
      src_ary = source.split("/")
      src_ary.shift
      dest_ary = dest.split("/")
      dest_ary.shift
      return dest if src_ary[0] != dest_ary[0]
      src_ary.clone.each_index do |i|
        break if src_ary[0] != dest_ary[0]
        src_ary.shift
        dest_ary.shift
      end
      src_ary.size.times do |i|
        dest_ary.unshift("..")
      end
      dest_ary.join("/")
    end
    def do_copy(path)
      if $link
        pwd=calc_relpath(File.dirname($dest_dir + "/" + path), $source_dir)
        File.symlink(pwd + "/" + path, $dest_dir + "/" + path)
      else
        File.copy($source_dir + "/" + path, $dest_dir + "/" + path)
      end
    end
    def copy(path)
      s=$source_dir + "/" + path
      d=$dest_dir + "/" + path
      if FileTest.exist?(d)
        $stats["ignore"] += 1
        return
      end
      if FileTest.exist?(s)
        File.mkpath(File.dirname(d))
        do_copy(path)
        $stats["copy"] += 1
      else
        $stats["notfound"] += 1
        $stderr.puts s + " not found."
      end
    end
    opts = GetoptLong.new(["--symlink", "-l", GetoptLong::NO_ARGUMENT],
    		      ["--help", "-h", GetoptLong::NO_ARGUMENT])
    opts.each do |opt,arg|
      case opt
      when "--symlink"
        $link = true
      when "--help"
        usage
      end
    end
    usage if ARGV.size != 2
    $source_dir = ARGV.shift
    $dest_dir = ARGV.shift
    if $link
      $source_dir = Dir::pwd + "/" + $source_dir unless $source_dir =~ /\A\//
      $dest_dir = Dir::pwd + "/" + $dest_dir unless $dest_dir =~ /\A\//
    end
    $stats = {}
    $stats["ignore"] = 0
    $stats["copy"] = 0
    $stats["notfound"] = 0
    open("|find #{$dest_dir}/dists -name Packages.gz") do |o|
      o.each_line do |file|
        file.chomp!
        print "Processing #{file}... "
        $stdout.flush
        each_file(file) do |path|
          copy(path)
        end
        puts "done"
      end
    end
    open("|find #{$dest_dir}/dists -name Sources.gz") do |o|
      o.each_line do |file|
        file.chomp!
        print "Processing #{file}... "
        $stdout.flush
        each_sourcefile(file.chomp) do |path|
          copy(path)
        end
        puts "done"
      end
    end
    puts "Number of Copied Files: " + $stats["copy"].to_s
    puts "Number of Ignored Files: " + $stats["ignore"].to_s
    puts "Number of Non-existence File: " + $stats["notfound"].to_s