General :: Bash Script To Change Hostname For RHEL
Jan 15, 2011
I'm trying to write a script to change the hostname of the computer at the first boot. The reason why I need this script is because I manage a number of training computer and I use Ghost to re-image it every 2 months. The script will read the mac address and the hostname from a csv file and compare it with the mac address on the current machine. I have stuck and don't know what is wrong as I'm new with script.
Code:
#!/bin/bash
# Description
# Change HOSTNAME for each machine from CSV file
#
# CSV File Format
# Each line contains two columns - mac address & hostname
# Description End .....
I admit I am a little green with the "Bourne Again Shell" (Bash), even though I was always not as proficient with the Bourne or Korn shell as with C Shell. From recent research the public sway is to Bash over tcsh. I can see I have been away from Linux/UNIX way to long. Running a network of workstations (upto 6) and servers (2) running RH Enterprise Linux 5.4 plus in the same network is an old DEC Alpha running Tru64 UNIX (don't know which version): I looking for a method to get the hostname I am logged in on to use in a Bash (or if necessary sh) script. This is to be added to an auto_start shell script start up our application on Linux workstation and servers.
I'm writing a bash script that executes a few perl scripts. One of the perl scripts that I need to execute requires two arguments with it. The arguments are stored in a txt file, each line contains a hostname and its corresponding IP address separated by a ":" (colon), the txt file looks like this below:
[Code]...
I'm not sure if it's the best way to accomplish this but here it goes. In the bash file, let's call it getHosts.sh, I create an array and assign each line of the file to an element in that array. I then think I need to create a new array where I take the hostname (which is before the ":") separate it from its IP address and place the IP address on a new line just below the hostname (this way I can reference to it like $hostNames[$x] would be the hostname, and $hostNames[$x+1] would be its IP address). So the new array would now look like this below:
My colleague changed the hostname using "system-config-network", but now I want to change it using any how (either system-config-network or /etc/sysconfig/network). Even I changed it from /etc/sysconfig/network. But when I reboot the system its getting old hostname. Is there some other place to change hostname?
I have a network of 2 WinXP machines and one linux box. I have fiddled around with the settings as you do when learning. The network is working. The network neighbourhood on the WinXP machines recognise the linux box and vice versa, (the linux Places|Network recognises the 2 WinXP). I can Ping the linux box using its hostname from a WinXp. But I cannot do the reverse. I get an 'unknown host' response. I can ping the linux to itself using its hostname.
my keybord F7 key is not working. i am using RHEL 5.0 version. in that i am using tty's(Ail+Ctrl+F1 to Alt+Ctrl+F6) . for return back to GUI means compulsary needed F7 Key(Alt+Ctrl+F7). but my F7 key is not working.
According to the Bash man pages, Quote: HOSTFILE Contains the name of a file in the same format as /etc/hosts that should be read when the shell needs to complete a hostname. The list of possible hostname completions may be changed while the shell is running; the next time hostname completion is attempted after the value is changed, bash adds the contents of the new file to the existing list. If HOSTFILE is set, but has no value, bash attempts to read /etc/hosts to obtain the list of possible hostname completions. When HOSTFILE is unset, the hostname list is cleared.
Here's the line in my .bashrc where HOSTFILE is set:
Code:
export HOSTFILE="~/.hosts"
I opened a new bash session, created ~/.hosts, filled it with the names of servers that I wanted to expand using tab completion. then typed
Code:
ssh p<tab><tab>
expecting to get a lists of all of the hosts in ~/.hosts starting with 'p'. Bash simply beeped at me twice.
I tried to change hostname through ssh. Old hostname = server1 New hostname = server1.domain.local
I changed the hostname by editing the /etc/hostname file Old: /etc/hostname server1 New: /etc/hostname server1.domain.local
Then I executed /etc/init.d/hostname.sh, and get as below, looks OK! hostname -f server1.domain.local hostname server1.domain.local hostname -s server1
The logs are still just showing server1. Example: tail -f /var/log/auth.log Apr 15 13:30:01 server1 CRON[22783]: pam_unix(cron:session): session opened for user root by (uid=0) Apr 15 13:30:02 server1 CRON[22783]: pam_unix(cron:session): session closed for user root
Do I really have to reboot, or is this normal behaviour that it does not show the full hostname?
I have changed my hostname to - ns1.searchdns.net by
1) editing the files /etc/sysconfig/network
2) then run the command - echo "ns1.searchdns.net" > /proc/sys/kernel/hostname
3) then restarted the service /etc/init.d/network restart
I run the command hostname and it returns ns1.searchdns.net. But I am also supposed to modify the /etc/hosts file. I am not sure about this. The content looks like this at the moment
How do you change the hostname in SLES11? I have normally used the /etc/hostname file and rebooted the server in other distros. I only notice the way to change it is in yast2 -> network devices -> network settings -> Hostnames. I am looking for where it is stored because I want to write a script to update it (apart of a server deployment process).
I've a little trouble: I reinstalled on my notebook OpenSUSE 11.3 yesterday and I'm unable to change the hostname. I modified it, but when I type on terminal
Code: uname -a
it doesn't give the right answer but returns
Code: host
I don't know where I wrong because I did this action many times with Opensuse 11.1 and 11.3 without any problem.
I changed my hostname by running sudo gedit /etc/hostname and changing the word there. Then I discovered that hadn't done anything so I used sudo hostname newname. My hostname was changed then but I tried to run sudo gedit /some/thing/else.txt and it said:
Code: sudo: unable to resolve host newname No protocol specified
(gedit:5512): Gtk-WARNING **: cannot open display: :0.0 and it says the same with sudo or gksudo for any program that has a gui including synaptic. I can run vi but I have no idea how to use it. I think the problem lies in the lines in /etc/hosts which still say
[Code]....
with the problem being that it still says localhost and my local IP address are ubuntu instead of newname. So if you could tell me how to edit that with vi or some other command line program
I have a problem with server bcs of the machine name. I'm wondering how to change the server name to it's IP. bcs now it has name "chrochne". I've found hostname in /etc/host and in /etc/hostname. But I'm afraid of changing it in this files. I'm using webmin and virtualmin to admin the server so can I change the name somewhere in the GUI?
I built the system with one name and now want to change it.I do the usual things. change the /etc/hosts file change the hostname with the command hostname newname changed /etc/sysconfig/network and then mail stops working. Put it back to the old name and it works fine.So I am guessing I am missing something in the configuration for sendmail. I checked the sendmail.cf file under /etc/mail and no reference back to the hostname was found.I also tried the GUI on the console to change the hostbname.
I have one account on an Ubuntu server with the correct PS1 variable and I want to make one of my other accounts on the same server have the same PS1 variable, so that my prompt on this new account (when I ssh into the machine) is the same as the original account.
Is there a way that I can pass this PS1 variable between accounts so the prompt is the same?
I have tried printing it out, copying the output, and then reassigning it to PS1 on the new account, but it just doesn't work.
I'm trying to change the bash prompt and based on the man pages $ should show a $ which changes to a # for a SU. However, this doesn't happen on my machine, it's $ for both user and SU.The line in .bashrc is:export PS1="u@h:w$"
first time user of F14 here. Used PCLinuxOS so far. Installed F14 fine , got samba up, set the hostname of the box to fedora.linux BUT when I connect to my wireless router (Belkin) the hostname shown in the routers DHCP client list is different: Router shows:
IP Address-----Host Name-----------------MAC Address 192.168.2.4----ralf-FK790AA-ABA-m9---00:22:5F:17:dE:98 In terminal it shows [dagaz@fedora ~]$ hostname fedora.linux [dagaz@fedora ~]$
When I search the forum or google, I end up with hostsfile or samba howtos. Those settings all show the right name : fedora.linux Why does the router show ralf-FK7 etc..? and where can I change it?
I installed openSUSE on my notebook with an usb drive using openSUSE 11.4 KDE LIVE iso. The installation process set the name to "linux-ygrl" which I don't really like. (I probably just missed the setting during the installation.). I tried to change it through YaST -> Network -> Hostnames and I set everything where needed to the new name and restarted but the changed weren't applied. I searched the web and found out about the /etc/HOSTNAME file which still contains "linux-ygrl". Now I could change it manually but I was wondering if there is a GUI for it? (I mean, openSUSE has for alsmost everything a GUI.
Is there any inbuilt functionality in Unix shell script so that i can able to convert lower case string input to an upper case? I dont want to use high level languages like java,python or perl for doing the job.
I need some help recovering from a "slight" screwup. We just moved 3 TB of data from one RAID Array to another. Low lever archive files. This was done with a regular cp (for some reason) and now we have lost all the timestamps on the files, and we urgently need to get the timestamps back on these files.
We are running Ubuntu 9.10 Server and we have mounted the following
1. /mnt/old-raid ##Old raid from the old server 2. /mnt/new-raid ##New raid on the server
I know we can read out the timestamp on the old server using the command stat -c '%Y' <<filname>>
I know we can change the timestamp of the file, using the command touch -d '<<date>>'
To get from the stat -c date to the input date in touch we need to use date -d @<<timestamp>> +'%d %b %Y %R'
So my question is, how can I create a loop that will list all files in a folder, get their timestamp and update the old timestamp with the new?
Is it possible to change the GNOME desktop background during some period of time by just a random phrase from the list on black screen? Will is seriously load the CPU and consume battery life?