Теги обслуговування пакетних запитів 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 цей сценарій веб-служби та прикладу - найкраще рішення ІМО, і, мабуть, недостатньо відомий. Ви повинні переробити це як належну відповідь, я поставити це +1!
Патрік

3

Додайте вашу систему на сайт підтримки dell, у розділ " Мої системи ". Ви можете обробляти до 100 систем.

Ви, звичайно, повинні мати акаунт на сайті Dell.

На жаль, я не знаю про пакетну систему для виконання цієї роботи, навіть якщо ви, звичайно, можете використовувати curl, snoopy або все, що вам відомо, щоб автоматично зробити логін, отримати список і проаналізувати результати.


3

Я знаю, що це старий пост, але я витратив на це пристойну кількість годин і думав, що допоможу всім іншим, хто зіткнувся з цим. Новий сайт Dell - це все javascript, і я не міг зрозуміти, як кодувати його, щоб запитувати дані службових тегів. Колись я думав використовувати замість них мобільний сайт (mobile = без JavaScript), і це працювало для мене, використовуючи perl / LWP, щоб перетягувати дані на кожен сервіс-тег. Я хакер з перла, тому хтось інший, можливо, зможе написати це трохи більш чисто. Нижче витягується оригінальний конфігурація системи. Ідея полягає в тому, що перша URL-адреса "отримати" тягне файл cookie з тегом служби, а друга URL-адреса витягує потрібні вам дані про тег служби. Потім ви можете проаналізувати "$ відповідь" другого отримання для даних, які шукаєте.

#!/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
Я думаю, ти нерозумієш. У Kyle вже є службові теги. Він хоче запитувати веб-сайт Dell, щоб отримати інформацію про сервісні теги.
Еван Андерсон

Еван має рацію щодо того, що я хочу ...
Кайл Брандт,

ой, я виправляюсь тоді :)
діасний

Я потрапляю 'dmidecode' is not recognized as an internal or external command, operable program or batch file.на свій ноутбук Dell.
starbeamrainbowlabs

то вам потрібно встановити dmidecode
dyasny

-1

-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.