I am relatively new at scripting in linux. Most of my scripting knowledge comes from doing batch scripting in windows.
Anyway, I have this script I'm trying to write that will install a program called Nagios along with a few other packages. I know it has to be something at the beginning that is causing it to break, but I can't figure out what it is.
Here is the script:
#!/bin/bash
apt-get install apache2
apt-get install build-essential
apt-get install libgd2-xpm-dev
apt-get install openssh-server
aptitude install php5 libapache2-mod-php5
/etc/init.d/apache2 restart
/usr/sbin/useradd nagios
passwd nagios
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -G nagcmd nagios
/usr/sbin/usermod -G nagcmd www-data
mkdir /home/downloads
cd /home/downloads
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz
wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz
cd /home/downloads
tar xzf nagios-3.2.1.tar.gz
cd nagios-3.2.1/
./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
vi /usr/local/nagios/etc/objects/contacts.cfg
make install-webconf
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
/etc/init.d/apache2 reload
cd /home/downloads
tar xzf nagios-plugins-1.4.14.tar.gz
cd nagios-plugins-1.4.14/
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install
ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios start
I'm not asking someone to rewrite this for me, I'm just trying to find some advice on what I'm doing wrong. Again, I am a newbie at this, so please forgive me if it turns out to be something stupid I'm doing.
I ran the script using bash -x and got the following output (note: I stopped the script half way so it didn't run all the way through):
root@john-desktop:/home/john/Downloads# bash -x ubuntu-desktop-server.sh
+ $'\r'
: command not founder.sh: line 2:
+ $'\r'
: command not founder.sh: line 3:
+ apt-get install $'apache2\r'
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Couldn't find package apache2
+ $'\r'
: command not founder.sh: line 5:
+ apt-get install $'build-essential\r'
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Couldn't find package build-essential
+ $'\r'
: command not founder.sh: line 7:
+ apt-get install $'libgd2-xpm-dev\r'
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Couldn't find package libgd2-xpm-dev
+ $'\r'
: command not founder.sh: line 9:
+ apt-get install $'openssh-server\r'
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Couldn't find package openssh-server
+ $'\r'
: command not founder.sh: line 11:
+ aptitude install php5 $'libapache2-mod-php5\r'
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
"ouldn't find any package whose name or description matched "libapache2-mod-php5
"ouldn't find any package whose name or description matched "libapache2-mod-php5
The following NEW packages will be installed:
apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a}
libapache2-mod-php5{a} libapr1{a} libaprutil1{a} libaprutil1-dbd-sqlite3{a}
libaprutil1-ldap{a} php5 php5-common{a}
0 packages upgraded, 11 newly installed, 0 to remove and 0 not upgraded.
Need to get 6,700kB of archives. After unpacking 18.9MB will be used.
Do you want to continue? [Y/n/?] ^C
root@john-desktop:/home/john/Downloads#
The script is riddled with carriage-return characters which are showing up as "\r". This usually comes from editing a script on a Microsoft platform then copying in the script using binary ftp rather than text ftp.
The line terminator in Microsoft text files is "carriage-return linefeed" whereas in unix text files it is just "linefeed". The suplus carriage-return characters are being treated as part of the command - hence the errors.
It is usually easier to re-transfer the file than to fix it, though there are many standard quick fixes depending on what Operating System you have.