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

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

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

11 ответов

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

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

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

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

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

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

Я знаю, что это старый пост, но я потратил немало часов на это и подумал, что помогу всем, кто столкнулся с этим. Весь новый сайт 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";
}

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

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

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

#!/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

Я знаю, что это довольно старый поток (я нашел его только потому, что он был связан с более новым), но, возможно, вы можете использовать этот плагин 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. Довольно удобно.

Очень старая тема, но поскольку она возглавляет мои результаты поиска в Google: официальный способ найти https://techdirect.dell.com/portal/AboutAPIs.aspx на данный момент слишком сложен. Я дополнил свою таблицу этой формулой =HYPERLINK(CONCATENATE("https://www.dell.com/support/search/en-us#q=",[@[Service Tag or Serial Number]],"&sort=relevancy&f :langFacet=[en]"),"Lkp"), что немного помогает.

У меня есть скрипт auto-it, который создает файл csv из списка тегов обслуживания путем опроса веб-сайта поддержки Dell.

Вы можете следовать той же логике, чтобы извлечь другую информацию и поместить их в формат CSV

http://fei-automation.blogspot.hk/2014/09/how-to-check-model-for-list-of-dell-pc.html

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

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 $!;
dmidecode -s system-serial-number

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

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

Другие вопросы по тегам