Hostname

Konfiguration av nätverk, hur man använder Ubuntu som server, och håller sin dator säker
Användarvisningsbild
Linus Göransson
Inlägg: 5
Blev medlem: 25 jul 2009, 20:18
OS: Ubuntu
Utgåva: 12.04 Precise Pangolin LTS
Ort: Jämshög

Hostname

Inlägg av Linus Göransson »

Jag har precis fått igång min webbserver och den fungerar som den ska. Problemet är när jag testar att ändra i /etc/hostname till en IP-adress istället så ser det ut som följande:
root@127:~$
OBS! Detta är bara ett exempel. Jag är inte inloggad som root.

D.v.s. att den "skalar" av efter första punkten. Min fråga är om det går att skriva ut hela IP-adressen?

Tacksam för svar!

Med vänliga hälsningar
Linus Göransson
:)
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: Hostname

Inlägg av andol »

/etc/hostname ska, likt namnet antyder, innehålla just ett värdnamn.

Låter som om du försöker lösa fel problem på fel sätt :)

Vilket resultat är det du är ute efter?
Användarvisningsbild
Linus Göransson
Inlägg: 5
Blev medlem: 25 jul 2009, 20:18
OS: Ubuntu
Utgåva: 12.04 Precise Pangolin LTS
Ort: Jämshög

Re: Hostname

Inlägg av Linus Göransson »

andol skrev:/etc/hostname ska, likt namnet antyder, innehålla just ett värdnamn.

Låter som om du försöker lösa fel problem på fel sätt :)

Vilket resultat är det du är ute efter?
Att kunna se hela IP-adressen. :)
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: Hostname

Inlägg av andol »

Jo, men var vill du att den ska visas? I terminalprompten enligt exemplet ovan?
Användarvisningsbild
Linus Göransson
Inlägg: 5
Blev medlem: 25 jul 2009, 20:18
OS: Ubuntu
Utgåva: 12.04 Precise Pangolin LTS
Ort: Jämshög

Re: Hostname

Inlägg av Linus Göransson »

andol skrev:Jo, men var vill du att den ska visas? I terminalprompten enligt exemplet ovan?
Ja.
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: Hostname

Inlägg av andol »

Rätt lösning är i sådant fall att peta på filen ~/.bashrc och där redigera variabeln PS1, så att prompten visar user@ip-adress istället för user@hostname.

Kan dock inte den syntaxen i huvudet.Kanske kan någon annan hjälpa dig. Annars så får jag återkomma.
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: Hostname

Inlägg av dmz »

andol skrev:Rätt lösning är i sådant fall att peta på filen ~/.bashrc och där redigera variabeln PS1, så att prompten visar user@ip-adress istället för user@hostname.
Fast så enkelt är det nog inte... Om man inte kan använda sig av backticks i PS1 och greppa reda på IP från ifconfig eller dylikt då. Det vill säga, om man vill vara säker på att det faktiskt är ens IP och inte bara en nummerserie utan mening...
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: Hostname

Inlägg av dmz »

Kanske borde testa innan jag skriver. Det gick ju utmärkt att använda sig av backticks. :)
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: Hostname

Inlägg av dmz »

En riktigt ful fullösning :D

Kod: Markera allt

PS1="`whoami`@`ifconfig|head -2|tail -1|awk '{print $2}'|sed s/addr\://` > "
Edit: Buggfix
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: Hostname

Inlägg av andol »

Utanför ämnet: För egen del hade jag gjort en`ifconfig eth0 | egrep "^\s*inet addr:" | sed -r "s/\s+inet addr:(([0-9]{1,3}\.){3}[0-9]{1,3})\s+.*/\1/"` där DMZ kör med `ifconfig|head -2|tail -1|awk '{print $2}'|sed s/addr\://`. Ingen aning om vilken utav dessa metoder som egentligen är bäst, men jag är rätt säker på att de säger något om skillnaden mellan mig och DMZ. Vad denna skillnad skulle vara är jag dok mindre säker på :)

Åter till ämnet.

Lösningen DMZ föreslår är helt funkis. Däremot kan den anpassas bättre till hur Ubuntu i övrigt sätter PS1 i ~/.bashrc.

Om du öppnar sagda fil så torde du hitta tre rader som sätter "PS1=...". Någonstans innan den första utav dessa ska du infoga följande rad.

Kod: Markera allt

IPA=`ifconfig|head -2|tail -1|awk '{print $2}'|sed s/addr\://`
Därefter ska du modifiera dessa tre PS1=. Börja med att lokalisera delen på raderna där det står \u@\h. Byt där ut \h mot ${IPA}, så att du istället får \u@${IPA}.

Notera att jag utgår från Ubuntu 9.04. Fullt möjligt att detaljerna skiljer sig i andra Ubuntu-versioner.
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: Hostname

Inlägg av dmz »

Givetvis är andol's lösning klart snyggare. Skillnanden mellan oss är att jag är amatör. :P
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Användarvisningsbild
Linus Göransson
Inlägg: 5
Blev medlem: 25 jul 2009, 20:18
OS: Ubuntu
Utgåva: 12.04 Precise Pangolin LTS
Ort: Jämshög

Re: Hostname

Inlägg av Linus Göransson »

Jag gjorde precis som du skrev. Resultatet blev som följande:
root@:~$
D.v.s. den skriver inte ut något alls. :(
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: Hostname

Inlägg av dmz »

Linus Göransson skrev:Jag gjorde precis som du skrev. Resultatet blev som följande:
root@:~$
D.v.s. den skriver inte ut något alls. :(
Posta din .bashrc
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Användarvisningsbild
Linus Göransson
Inlägg: 5
Blev medlem: 25 jul 2009, 20:18
OS: Ubuntu
Utgåva: 12.04 Precise Pangolin LTS
Ort: Jämshög

Re: Hostname

Inlägg av Linus Göransson »

dmz skrev:
Linus Göransson skrev:Jag gjorde precis som du skrev. Resultatet blev som följande:
root@:~$
D.v.s. den skriver inte ut något alls. :(
Posta din .bashrc

Kod: Markera allt

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

# don't put duplicate lines in the history. See bash(1) for more options
export HISTCONTROL=ignoredups
# ... and ignore same sucessive entries.
export HISTCONTROL=ignoreboth

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color) color_prompt=yes;;
esac

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
        # We have color support; assume it's compliant with Ecma-48
        # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
        # a case would tend to support setf rather than setaf.)
        color_prompt=yes
    else
        color_prompt=
    fi
fi

IPA=`ifconfig|head -2|tail -1|awk '{print $2}'|sed s/addr\:`

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@${IPA}\[\033[00m\]$
else
    PS1='${debian_chroot:+($debian_chroot)}\u@${IPA}:\w\$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
    ;;
*)
    ;;
esac

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

#if [ -f ~/.bash_aliases ]; then
#    . ~/.bash_aliases
#fi

# enable color support of ls and also add handy aliases
if [ "$TERM" != "dumb" ] && [ -x /usr/bin/dircolors ]; then
    eval "`dircolors -b`"
    alias ls='ls --color=auto'
    #alias dir='ls --color=auto --format=vertical'
    #alias vdir='ls --color=auto --format=long'

    #alias grep='grep --color=auto'
    #alias fgrep='fgrep --color=auto'
    #alias egrep='egrep --color=auto'
fi

# some more ls aliases
#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: Hostname

Inlägg av andol »

Tycker du att din IPA= ser ut som något vilket rekommenderades ovan?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Hostname

Inlägg av Konservburk »

andol skrev:Utanför ämnet: För egen del hade jag gjort en`ifconfig eth0 | egrep "^\s*inet addr:" | sed -r "s/\s+inet addr:(([0-9]{1,3}\.){3}[0-9]{1,3})\s+.*/\1/"` där DMZ kör med `ifconfig|head -2|tail -1|awk '{print $2}'|sed s/addr\://`. Ingen aning om vilken utav dessa metoder som egentligen är bäst, men jag är rätt säker på att de säger något om skillnaden mellan mig och DMZ. Vad denna skillnad skulle vara är jag dok mindre säker på :)
Du är mer petig med matchningen än dmz. Han plockar alltid ut andra ordet på andra raden, vilket inte nödvändigtvis behöver vara ip-adressen. Du antar å andra sidan att det alltid är eth0 som gäller, vilket kanske inte heller stämmer alla gånger.

Båda två har även onödigt mycket skräp i respektive pipeline. Finns sed eller awk med så bör det gå att klara sig utan head, tail, grep och liknande.

För dmz hade det kunnat räcka med antingen sed eller awk:

Kod: Markera allt

ifconfig | sed '2!d;s/.*addr://;s/\s.*//'
ifconfig | awk -F'[ :]+' 'NR==2{print$4}'
Du hade klarat dig bra utan egrep:

Kod: Markera allt

ifconfig eth0 | sed -nr "s/\s+inet addr:(([0-9]{1,3}\.){3}[0-9]{1,3})\s+.*/\1/p"
Själv hade nog plockat ut det första eth*-ip:t så här:

Kod: Markera allt

ifconfig eth | sed -n "/.*addr:/{s///;s/\\s.*//p;q}"
Exakt hur man gör beror förstås mycket på vad man är ute efter. ;)

Sen vill jag också peka på att fnuttologin i det här fallet blir väldigt avgörande för i vilken ordning saker görs. Både dmz och du tar fram ip-adressen en gång när prompten sätts, vilket innebär att prompten inte kommer att återspegla eventuella ändringar av ip-adressen. Jämför dessa snarlika exempel:

Kod: Markera allt

IPA=`ifconfig eth | sed -n "/.*addr:/{s///;s/\\s.*//p;q}"`
PS1='${debian_chroot:+($debian_chroot)}\u@$IPA:\w\$ '
Vill man att ip-adressen som visas alltid ska vara den aktuella så behövs några extra fnuttar:

Kod: Markera allt

IPA='`ifconfig eth | sed -n "/.*addr:/{s///;s/\\s.*//p;q}"`'
PS1='${debian_chroot:+($debian_chroot)}\u@'$IPA':\w\$ '
Skriv svar

Återgå till "Nätverk, säkerhet och servrar"