Sortera bort output

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
Pinky
Inlägg: 1258
Blev medlem: 30 jan 2007, 15:59
OS: Fedora
Ort: Kristianstad/Sverige
Kontakt:

Sortera bort output

Inlägg av Pinky »

Hej!

Jag har ett script där min server ssh-ar till min router och hämtar min externa IP. Jag vill självklart att cron mailar mig om något går snett, därför vill jag inte redirecta stderr.
Problemet är att när man ssh-ar till routern så kommer:
DD-WRT v23 SP2 std (c) 2006 NewMedia-NET GmbH
Release: 09/15/06 (SVN revision: 3932)
av någon anledning på stderr, vilket innebär att jag får mail varenda gång scriptet körs (1 gång i timmen).

Här är scriptet som det ser ut just nu:

Kod: Markera allt

#!/bin/bash
IP=$(ssh root@192.168.1.1 -p45 "ifconfig vlan1" | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}')
echo "<html><head><title>Current IP Check</title></head><body>Current IP Address: $IP</body></html>" > /var/www/routerIP.php
Scriptet används för att skapa en php-sida som ddclient sedan använder för att lägga in min routers IP i min DNS hos loopia. Servern har ett eget externt interface, därav det här krånglet :)

Vad jag behöver är alltså förslag på hur jag gör för att bli av med texten vid ssh-inlogg utan att slänga eventuella felmeddelanden.

Mvh
Martin
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Sortera bort output

Inlägg av Konservburk »

Du vill med andra ord filtrera stderr och kasta bort vissa rader. Skulle du inte bara kunna köra skiten genom grep -v eller liknande?

Kod: Markera allt

#!/bin/bash
IP=$(
   ssh root@192.168.1.1 -p45 'ifconfig vlan1' 2> >(
      grep -vE '(NewMedia-NET GmbH|SVN revision)' >&2
   ) |
   grep 'inet addr:' |
   grep -v '127.0.0.1' |
   cut -d: -f2 |
   awk '{print $1}'
)
Skriv svar

Återgå till "Terminalforum"