Пакетный запрос меток обслуживания 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, конечно