Пакетный запрос меток обслуживания Dell


9

Кто-нибудь знает способ получения информации для списка меток обслуживания? Есть ли у Dell раздел на этом сайте? Я также был бы открыт для любых библиотек Perl / Python или сценариев оболочки * nix.

Сейчас я в основном хочу какую-то дату для каждого тега.


Что именно вы имеете в виду, когда просите «получить кучу информации» от Dell?
одиннадцать81

Дата окончания гарантии будет то, что я искал. Дата отгрузки также будет хорошей.
Эван Андерсон

Быстрый поиск дал мне много людей, которые хотят запрашивать у машин метки обслуживания, но очень мало о людях, обращающихся к веб-сайту Dell. Spiceworks связывает тег службы со страницей загрузки драйверов, которая принимает тег службы в качестве аргумента URL. Переход с этой страницы на страницу «Конфигурация системы», в свою очередь, использует этот служебный тег, предоставленный Spiceworks (хотя в данный момент его больше нет в URL). Похоже, вы не просто найдете URL-адрес, в котором вы можете передать служебный тег, который вернет некоторый HTML-код, который вы можете отсканировать с экрана. Жаль тоже. Это было бы удобно.
Эван Андерсон

Ответы:


19

Загрузите следующий URL (заменив SVCTAG в конце на фактический тег службы) для каждого тега:

http://support.dell.com/support/topics/global.aspx/support/my_systems_info/details?c=us&l=en&s=gen&ServiceTag=SVCTAG

Разбор итоговой страницы для интересующей вас информации оставлен читателю в качестве упражнения :-)


2
формат страницы недавно изменился и теперь его сложнее разобрать. Похоже, что API доступен по адресу xserv.dell.com/services/assetservice.asmx?WSDL . Быстрый скрипт для запроса: gist.github.com/1893036
Даниэль

@Daniel этот сценарий веб-службы и пример является лучшим решением IMO, и, вероятно, не очень известен. Вы должны опубликовать это как правильный ответ, я +1 это!
Патрик

3

Добавьте свою систему на сайт поддержки Dell, в разделе « Мои системы ». Вы можете обрабатывать до 100 систем.

Вы должны иметь учетную запись на сайте Dell, конечно.

К сожалению, я не знаю о пакетной системе для выполнения этой работы, даже если вы, конечно, можете использовать curl, snoopy или что-то, с чем вы знакомы, для автоматического входа в систему, получения списка и анализа результатов.


3

Я знаю, что это старый пост, но я потратил немало часов на это и подумал, что помогу всем, кто столкнулся с этим. Весь новый сайт Dell - это javascript, и я не мог понять, как использовать его для запроса данных меток обслуживания. Через некоторое время я подумал об использовании их мобильного сайта (mobile = no javascript), и это сработало для меня, используя perl / LWP, чтобы получить данные для каждого тега службы. Я хакер Perl, так что кто-то другой может написать это немного более аккуратно. Ниже вытащил исходную конфигурацию системы. Идея состоит в том, что первый URL get получает файл cookie с тегом service, а второй URL get получает данные о теге service, которые вы хотите получить. Затем вы можете проанализировать "$ answer" второго запроса для данных, которые вы ищете.

#!/usr/bin/perl

use strict;
use LWP::Simple;
use LWP::UserAgent;

my $inputfile  = $ARGV[0];

my ($url,$response,$answer);

open (DATA, $inputfile) or die "Can't open $inputfile \n";
foreach my $serviceTag (<DATA>)
{
   chomp $serviceTag;
   print "\n$serviceTag";

   ##### Allow Cookies
   my $browser = LWP::UserAgent->new;
   $browser->cookie_jar({});
   $browser->cookie_jar( HTTP::Cookies->new(
      'file' => 'cookies.lwp',  # where to read/write cookies
      'autosave' => 0           # do not save it to disk when done
   ));

   # declare agent as mozilla, not perl LWP
   $browser->agent("Mozilla/8.0");

   my $urlPartA = "http://m.dell.com/mt/www.dell.com/support/troubleshooting/us/en/19/Servicetag/";
   my $urlPartB = "?s=BIZ&un_jtt_redirect";
   my $firstURL = join('', $urlPartA,$serviceTag,$urlPartB);
   #print "\nURL = $firstURL";


   $url = URI->new("$firstURL");
   $response = $browser->get( $url );
   $answer = $response->content;
   #print "\nAnswer:\n$answer\n\n";

   $url = URI->new('http://m.dell.com/mt/www.dell.com/support/troubleshooting/us/en/555/TroubleShooting?name=TroubleShooting_SystemConfigurationTab');
   $response = $browser->get( $url );
   $answer = $response->content;
   #print "\nAnswer:\n$answer\n\n";
}

2

Метка обслуживания обычно аналогична серийному номеру.

Класс WMI Win32_BaseBoard.SerialNumber содержит эту информацию. Google "серийный номер wmi", и вы найдете несколько примеров решений для получения этих данных. Во время сборки мы используем сценарий для присвоения имени коробке, используя серийный номер и другие предварительно добавленные символы в качестве имен хостов нашей рабочей станции, что значительно упрощает поиск и устранение неисправностей при большом количестве клиентов.


2
Я думаю, что у Кайла уже есть метки обслуживания. Он хочет запросить веб-сайт Dell, чтобы получить информацию о метках обслуживания - датах окончания гарантии, датах доставки и т. Д.
Эван Андерсон,

Я идиот!
duffbeer703

2

У Dell теперь есть возможность сохранить ваши метки обслуживания. Вы должны создать логин с ними, и это все. Он также показывает, какие серверные гарантии истекают, и вы можете экспортировать с него.


1
#!/usr/bin/python

# dell_warranty.py v0.1
# Written by Frode Egeland <egeland[at]gmail.com> - Copyright 2009
# Released under the terms of the GNU GPL v3 - see http://www.gnu.org/licenses/gpl-3.0.html
#
# Version History
# 0.1 - 2009-10-12 - Frode Egeland - Initial version. Tested with a simple csv list of service tags only.
# 

import urllib2, csv, re
from BeautifulSoup import BeautifulSoup

url="http://support.dell.com/support/topics/global.aspx/support/my_systems_info/details?c=us&l=en&s=gen&ServiceTag=%s"

stlist = []

# generate a list of servicetags from a csv
csvfile = csv.reader(open('taglist.csv'))

for line in csvfile:
 for entry in line:
  stlist.append(entry)

fixdate = re.compile("(\d{1,2})\/(\d{1,2})\/(\d{4})")

print "Service Tag, Warranty Type, Provider, Start Date, End Date, Days Remaining"

for currtag in stlist:
 page = urllib2.urlopen(url % (currtag,))

 for line in page.readlines():
  if "Parts only Warranty" in line:
   soup = BeautifulSoup(line)
   break
 table = soup.find('table',{'class':"contract_table"})
 rows = table.findAll('tr')
 rows = rows[1:]
 for row in rows:
  output = "%s" % (currtag,)
  cells = row.findAll('td')
  for cell in cells:
   if cell.a: # link / formatted text
    txt = cell.a.string
   elif cell.b: # bold text
    txt = cell.b.string
   elif cell.i: # italic
    txt = cell.i.string
   else: #normal text
    txt = cell.string
   match = fixdate.search(txt)
   if match:
    txt = "%d-%d-%d" % (int(match.group(3)),int(match.group(1)),int(match.group(2)))
   output = "%s,%s" % (output,txt)
  output = output.strip()
  print output

1

Я знаю, что это довольно старый поток (я нашел его только потому, что он был связан с более новым), но, возможно, вы можете использовать этот плагин nagios : nagios exchange

python check_dell_warranty.py
OK: Service Tag: tag Warranty: Next Business Day, Provider: DELL, Start: 2010-02-24, End: 2013-02-25, Days left: 860 Warranty: NBD ProSupport For IT On-Site, Provider: DELL, Start: 2010-02-24, End: 2013-02-25, Days left: 860

Скрипт запрашивает стандартный localhost, пытаясь использовать dmidecode. Вы также можете запустить его на удаленном хосте, используя SNMP, или запустить его из NRPE. Довольно удобно.


-1
dmidecode -s system-serial-number

вернет метку сервиса

вы можете использовать ssh для удаленного запуска его на всех ваших системах в пакете. при условии, что все они работают под управлением Linux, конечно


2
Я думаю, что вы недоразумение. Кайл уже имеет метки обслуживания. Он хочет запросить веб-сайт Dell, чтобы получить информацию о метках обслуживания.
Эван Андерсон

Эван прав насчет того, что я после ...
Кайл Брандт

о, тогда я
исправлюсь

Я 'dmidecode' is not recognized as an internal or external command, operable program or batch file.вхожу в свой ноутбук Dell.
starbeamrainbowlabs

тогда нужно установить
dmidecode


-1

Примечание: это отредактированный репост этого ответа

Dell недавно изменили свой веб-сайт.

Я обновил приведенный выше скрипт Perl, чтобы учесть это изменение.

Я был заинтересован только в том, чтобы выгрузить даты отгрузки каждой машины в текстовый файл, поэтому только проанализировал это, но я уверен, что код можно легко изменить, чтобы получить любые данные, которые вы хотите.

===

#!/usr/bin/perl

use strict;
use LWP::Simple;
use LWP::UserAgent;
use Mojo::DOM;

my $inputfile  = $ARGV[0];

my ($url,$response,$html);
my $outputfile = "result.txt";
open (DATA, $inputfile) or die "Can't open $inputfile \n";
open OUTPUT, ">>".$outputfile or die "Could not open '$outputfile'\n";
foreach my $serviceTag (<DATA>)
{
   chomp $serviceTag;
   print "\n$serviceTag\n";
   print OUTPUT $serviceTag."\t";
   ##### Allow Cookies
   my $browser = LWP::UserAgent->new;
   $browser->cookie_jar({});
   $browser->cookie_jar( HTTP::Cookies->new(
      'file' => 'cookies.lwp',  # where to read/write cookies
      'autosave' => 0           # do not save it to disk when done
   ));

   # declare agent as mozilla, not perl LWP
   $browser->agent("Mozilla/8.0");
    #    
   my $urlPartA = "http://www.dell.com/support/home/us/en/19/product-support/servicetag/";
    #   configuration
   my $urlPartB = "/configuration";
   my $firstURL = join('', $urlPartA,$serviceTag,$urlPartB);
   #print "\nURL = $firstURL";

   $url = URI->new("$firstURL");
   $response = $browser->get( $url );
   $html = $response->content;
   #print "\nAnswer:\n$html\n\n";

   my @values;
   my $dom = Mojo::DOM->new;
   $dom->parse($html);
   my $skip;
   for my $dd ($dom->find('div.col-lg-4.col-md-4.col-sm-3.col-xs-6')->each) {
    push(@values, $dd->text) if $skip++;
    #print $dd->text, "\n" if $skip++;
   }
    print $values[1]."\n";
    if ( $values[1] =~ m/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/ )

    {   # format date better for Excel
        #print OUTPUT $values[1]."\n";
        print OUTPUT "$3-$1-$2\n";
    }

    print $values[1]."\n";
    print "$3-$1-$2\n";
}


close OUTPUT or die $!;

2
Должно быть изменение в исходном ответе.
Охотник на оленей
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.