- Products
- Learn
- Local User Groups
- Partners
- More
Quantum Spark Management Unleashed!
Introducing Check Point Quantum Spark 2500:
Smarter Security, Faster Connectivity, and Simpler MSP Management!
Check Point Named Leader
2025 Gartner® Magic Quadrant™ for Hybrid Mesh Firewall
HTTPS Inspection
Help us to understand your needs better
CheckMates Go:
SharePoint CVEs and More!
There was a serious itch had to scratch where I want to get a fast overview of the current General Availability and Ongoing Jumbo Hotfix details.
Due to the restructuring of information I had to redesign my tool and it ended up to be a relative simple bash script.
#!/bin/bash
# Fetch Check Point HFA details
# Design by Hugo van der Kooij
CURL="curl -s"
BASE="https://sc1.checkpoint.com/documents/Jumbo_HFA"
for VER in R80.20 R80.30 R80.40 R81 R81.10
do
if [ $VER = "R81" ]; then
VER2="R81.00"
else
VER2=$VER
fi
echo " *** Version $VER ***"
$CURL "${BASE}/${VER}/${VER2}/List-of-Takes.htm" | \
grep "Take" | \
grep -v "Archive" | \
grep "General" | \
sed "s/.*\">//g" | \
sed "s/<.*//g" | \
head -1
$CURL "${BASE}/${VER}/${VER2}/List-of-Takes.htm" | \
grep "Take" | \
grep "Ongoing" | \
sed "s/.*\">//g" | \
sed "s/<.*//g" | \
head -1
done
There was a serious itch had to scratch where I want to get a fast overview of the current General Availability and Ongoing Jumbo Hotfix details.
Due to the restructuring of information I had to redesign my tool and it ended up to be a relative simple bash script.
#!/bin/bash # Fetch Check Point HFA details # Design by Hugo van der Kooij CURL="curl -s" BASE="https://sc1.checkpoint.com/documents/Jumbo_HFA" for VER in R80.20 R80.30 R80.40 R81 R81.10 do if [ $VER =
...;
I had to fix the script a bit and the script above has been changed about 30 minutes after the original post to resolve the issue with R81
It now runs well ....
*** Version R80.20 ***
Take 205 - General Availability
Take 211 - Ongoing
*** Version R80.30 ***
Take 246 - General Availability
Take 251 - Ongoing
*** Version R80.40 ***
Take 158 - General Availability
Take 153 - Ongoing
*** Version R81 ***
Take 65 - General Availability
Take 68 - Ongoing
*** Version R81.10 ***
Take 45 - General Availability
Take 55 - Ongoing
I had to fix the script a bit and the script above has been changed about 30 minutes after the original post to resolve the issue with R81
It now runs well ....
*** Version R80.20 *** Take 205 - General Availability Take 211 - Ongoing *** Version R80.30 *** Take 246 - General Availability Take 251 - Ongoing *** Version R80.40 *** Take 158 - General Availability Take 153 - Ongoing *** Version R81 *** Take 65 - General Availability Take 68 - Ongoing *** Version R81.10 *** Ta
...;
Well. It didn't take Check point that long to break my script. So I am back to hacking my way back in. Stay tuned.
New version:
#!/bin/bash
# Fetch Check Point HFA details
# Design by Hugo van der Kooij
CURL="curl -s"
BASE="https://sc1.checkpoint.com/documents/Jumbo_HFA"
for VER in R80.20 R80.30 R80.40 R81 R81.10
do
if [ $VER = "R81" ]; then
VER2="R81.00"
else
VER2=$VER
fi
echo " *** Version $VER ***"
$CURL "${BASE}/${VER}/${VER2}/${VER2}-List-of-all-Resolved-Issues.htm" | \
grep "Take" | \
grep -v "Archive" | \
grep "General" | \
sed "s/.*\">//g" | \
sed "s/<.*//g" | \
head -1
# $CURL "${BASE}/${VER}/${VER2}/List-of-Takes.htm" | \
$CURL "${BASE}/${VER}/${VER2}/${VER2}-List-of-all-Resolved-Issues.htm" | \
grep "Take" | \
grep "Ongoing" | \
sed "s/.*\">//g" | \
sed "s/<.*//g" | \
head -1
done
New version:
#!/bin/bash # Fetch Check Point HFA details # Design by Hugo van der Kooij CURL="curl -s" BASE="https://sc1.checkpoint.com/documents/Jumbo_HFA" for VER in R80.20 R80.30 R80.40 R81 R81.10 do if [ $VER = "R81" ]; then VER2="R81.00" else VER2=$VER fi echo " *** Version $VER ***" $CURL "${BASE}/${VER}/${VER2}/${VER2}-List-of-all-Resolved-Issues.htm" | \ grep "Take" | \ grep -v "Archive" | \ grep "General" | \ sed "s/.*\">//g" | \ sed "s/<.*//g" | \ head -1 # $CURL "${BASE}
...;
You can replace your collection of sed/grep with some parsing via xmllint. You'll need to save the output from curl to a file and do an ugly force-feeding to xmllint to get pretty-ish output:
$CURL "${BASE}/${VER}/${VER2}/${VER2}-List-of-all-Resolved-Issues.htm" |\
xmllint --html --xpath '//table[@class="TableStyle-TP_Table_Dark_Header_and_Pattern"]/tbody/tr[1]' - 2>/dev/null ;echo
et voilà:
for VER in R80.20 R80.30 R80.40 R81 R81.10
do
if [ $VER = "R81" ]; then
VER2="R81.00"
else
VER2=$VER
fi
echo -n "$VER "
curl -s -k "${BASE}/${VER}/${VER2}/${VER2}-List-of-all-Resolved-Issues.htm" |\
xmllint --html --xpath '//table[@class="TableStyle-TP_Table_Dark_Header_and_Pattern"]/tbody/tr[1]/td/p/a/text()' - 2>/dev/null
echo
done
R80.20 Take 230 - General Availability
R80.30 Take 255 - General Availability
R80.40 Take 196
R81 Take 82
R81.10 Take 93
Until Check Point web devs change the HTML structure for R82 .... 😕
You can replace your collection of sed/grep with some parsing via xmllint. You'll need to save the output from curl to a file and do an ugly force-feeding to xmllint to get pretty-ish output:
$CURL "${BASE}/${VER}/${VER2}/${VER2}-List-of-all-Resolved-Issues.htm" |\ xmllint --html --xpath '//table[@class="TableStyle-TP_Table_Dark_Header_and_Pattern"]/tbody/tr[1]' - 2>/dev/null ;echo
et voilà:
for VER in R80.20 R80.30 R80.40 R81 R81.10 do if [ $VER = "R81" ];
...;
To make it closer to your original:
curl -s -k https://sc1.checkpoint.com/documents/Jumbo_HFA/${VER}/${VER2}/${VER2}-List-of-all-Resolved-Issues.htm |\
xmllint --html --xpath 'concat(//table[@class="TableStyle-TP_Table_Dark_Header_and_Pattern"]/tbody/tr[(contains(.//td[3]/p/text(),"-"))][1]/td[1]/p/a/text()," Ongoing
", //table[@class="TableStyle-TP_Table_Dark_Header_and_Pattern"]/tbody/tr[not (contains(.//td[3]/p/text(),"-"))][1]/td[1]/p/a/text(), " Recommended
")' - 2>/dev/null
There's a literal carriage-return in the text after the two strings so that a line break appears (xmllint can't really do "\n" like nature intended... 🙄)
Output:
*** Version R80.20 ***
Take 210 - Ongoing Ongoing
Take 230 - General Availability Recommended
*** Version R80.30 ***
Take 245 - Ongoing Ongoing
Take 255 - General Availability Recommended
*** Version R80.40 ***
Take 196 Ongoing
Take 192 Recommended
*** Version R81 ***
Take 82 Ongoing
Take 81 Recommended
*** Version R81.10 ***
Take 94 Ongoing
Take 87 Recommended
So now someone can incorporate this into an Ansible playbook, or whatever else you want.
To make it closer to your original:
curl -s -k https://sc1.checkpoint.com/documents/Jumbo_HFA/${VER}/${VER2}/${VER2}-List-of-all-Resolved-Issues.htm |\ xmllint --html --xpath 'concat(//table[@class="TableStyle-TP_Table_Dark_Header_and_Pattern"]/tbody/tr[(contains(.//td[3]/p/text(),"-"))][1]/td[1]/p/a/text()," Ongoing ", //table[@class="TableStyle-TP_Table_Dark_Header_and_Pattern"]/tbody/tr[not (contains(.//td[3]/p/text(),"-"))][1]/td[1]/p/a/text(), " Recommended ")' - 2>/dev/null
...;
About CheckMates
Learn Check Point
Advanced Learning
YOU DESERVE THE BEST SECURITY