The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,862 other subscribers

Archive for the ‘Linux’ Category

beep, patch and ed – The Isoblog.

Posted by jpluimers on 2018/04/11

So we are all doomed: on debian, beep was an issue leading into a CVE. The fix is an issue too, and also has a CVE.

Source: [WayBack] beep, patch and ed – The Isoblog.

Related:

–jeroen

Posted in *nix, *nix-tools, Debian, Linux, Power User, Security | Leave a Comment »

Is a raspberry pi 1 good enough for a pihole server? : pihole

Posted by jpluimers on 2018/04/10

Many people use it that way. Which means I can put it on an old Raspberry Pi B+ revision 1.2 board (which Wikipedia indicates as the B 1+ in the Specifications table but as Raspberry Pi 1 Model B+ revision 1.2 in the schematics of connectors).

I might consider DietPi as distribution (which is Debian based) as it is even ligher.

See [WayBackhttps://www.reddit.com/r/pihole/comments/6h39zr/is_a_raspberry_pi_1_good_enough_for_a_pihole/#divw0i5

One more note: I need to check out which Debian base name (which indicates the version) works best as there seemed to be a dnsmasq issue (not archived because discourse hatesdislikes the WayBack machine and Archive.is):

Like Apple, Android and Delphi, they use name based versions of which I always forget the order of. Luckily the source of the below table gets updated over time [2017 Archive.is2018 Archive.is] Debian releases and names – Electric Toolbox Debian releases are named after characters from Toy Story and are frequently referred to with the name rather than the version.:

Version Code name Release date Toy Story character
1.1 Buzz 1996-06-17 Buzz Lightyear
1.2 Rex 1996-12-12 Rex (the T-Rex)
1.3 Bo 1997-06-05 Bo Peep
2.0 Hamm 1998-07-24 Hamm (the pig)
2.1 Slink 1999-03-09 Slinky Dog
2.2 Potato 2000-08-15 Mr Potato Head
3.0 Woody 2002-07-19 Woody the cowboy
3.1 Sarge 2005-06-06 Sarge from the Bucket O’ Soldiers
4.0 Etch 2007-04-08 Etch, the Etch-A-Sketch
5.0 Lenny 2009-02-14 Lenny, the binoculars
6.0 Squeeze 2011-02-06 Squeeze toy aliens
7 Wheezy 2013-05-04 Wheezy the penguin
8 Jessie 2015-04-26 Jessie the cowgirl
9 Stretch 2017-06-17 Rubber octopus from Toy Story 3
10 Buster not yet released Andy’s pet dog
11 Bullseye Not yet released Woody’s horse
Sid “unstable” The next door neighbour

Via: [WayBack] Software-update: Pi-hole 3.3.1 – IT Pro – Downloads – Tweakers

–jeroen

Posted in *nix, Debian, Development, Hardware Development, Linux, Power User, Raspberry Pi, Raspbian | 1 Comment »

Git repository with fixed binaries for Tumbleweed on Raspberry Pi 3 – Bug 1084419 – Glibc update to 2.27 causes segfault during name resolution

Posted by jpluimers on 2018/04/08

OSC downloads for [archive.is] https://bugzilla.opensuse.org/show_bug.cgi?id=1084812

The binaries provided by Stefan Brüns, together with installation instructions are now in a git repository at [WayBack] wiert.me/public/linux/opensuse/tumbleweed/aarch64 a.k.a. arm64/1084182-fix-osc-binaries · GitLab.

Follow the steps in Applying the fixes on a broken system to at least temporarily get your system to work (a new zypper dist-upgrade might fail, so be careful with that).

The cause was some ARM A53 errata handling:

–jeroen

Posted in *nix, *nix-tools, Development, DVCS - Distributed Version Control, git, Hardware Development, Linux, openSuSE, Power User, Raspberry Pi, Source Code Management, SuSE Linux, Tumbleweed | Leave a Comment »

Tumbleweed: Comparing your local version with the on-line versions

Posted by jpluimers on 2018/04/05

Comparing your local version with the on-line versions

Before upgrading a Tumbleweed system, it makes sense to check which is your local and which is the on-line version. This is actually a tad more complicated than it sounds.

There are three versions involved:

There is a mismatch between the last two as a side effect of decoupling the arm port a bit from the high checkin frequency of openSUSE:Factory; ARM simply has not enough power to build the snapshot in the same time Intel and PowerPC can do.

[WayBack] Dominique a.k.a. DimStar (Dim*) – A passionate openSUSE user thinks the last two are mismatched is a side effect off [WayBack] osc service remoterun operates on outdated sources (product builder) · Issue #4768 · openSUSE/open-build-service · GitHub.

He also tech-reviewed this post.

Your local release version

There are various ways to get your local version:

The easiest is to inspect the file  /etc/os-release, for instance 20180208 in the file content:

NAME="openSUSE Tumbleweed"
# VERSION="20180208 "
ID=opensuse ID_LIKE="suse"
VERSION_ID="20180208"
PRETTY_NAME="openSUSE Tumbleweed"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:tumbleweed:20180208"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"

You can also perform rpm --query --provides openSUSE-release | grep "product(openSUSE)" which for the same install returned this product(openSUSE) = 20180208-0.

Finally, you can use zypper to query the installed product which also includes the version:

$ zypper search --installed-only --type product --details
Loading repository data...
Reading installed packages...

S  | Name     | Type    | Version    | Arch    | Repository       
---+----------+---------+------------+---------+------------------
i+ | openSUSE | product | 20180228-0 | aarch64 | (System Packages)

The on-line release version

I will explain this for the aarch64 architecture, but the mechanism holds for all architectures, it is just that the directory names vary.

Architectures and base directories you can use this mechanism with:

Each architecture contains the version number in two kinds of places:

  1. The content of the repository meta data in a file named *-primary.xml.gz referenced from repomd.xml in the repodata subdirectory
  2. The filename of a package named ?P=openSUSE-release-2*

Back to the aarch64 architecture:

The on-line build version

I will explain this for the aarch64 architecture, but the mechanism holds for all architectures that build on openQA, it is just that the directory names vary and not all architectures are running on openQA.

Architectures and base directories you can use this mechanism with:

Architectures not on openQA:

  • armv6hl
  • armv7hl

Each platform contains the version number in two kinds of places:

  1. The content of the repository meta data in the file named media.1/media and media.1/products
  2. Names used in the openQA links

Back to the aarch64 architecture on the ARM platform:

–jeroen

Posted in *nix, Linux, openSuSE, Power User, SuSE Linux, Tumbleweed | Leave a Comment »

DNS traffic monitoring tools: tshark, tcpdump or dnstop

Posted by jpluimers on 2018/04/02

I resolved my issue with tshark, but that’s not available on all systems neither is dnstop. Most systems do have tcpdump though.

Anyway, some links:

–jeroen

Posted in *nix, *nix-tools, DNS, Internet, Linux, openSuSE, Power User, SuSE Linux | Leave a Comment »

terminate screen monitoring serial port – Unix & Linux Stack Exchange

Posted by jpluimers on 2018/03/28

  • Use the screen quit command (normally ctrl-A ctrl-\).
  • Use the command mode of screen (normally ctrl-A :) then type quit or help for more commands

This will quit screen and release the TTY serial port connection.

Related: hooking screen to a TTY serial port connection in [WayBackThe woods and trees of OpenSuSE on single-board computers – image abbreviations – and getting it installed using OS X

–jeroen

via:

Posted in *nix, *nix-tools, Linux, openSuSE, Power User, SuSE Linux | Leave a Comment »

Ben, blogging: Show the complete apache config file

Posted by jpluimers on 2018/03/20

Quite a while back, I got attended to Ben, blogging: Show the complete apache config file:

If you really want to see all the complete config settings, there is no existing tool for that. This Stack Overflow page  answered this question pretty well: You can use apachectl -S to see the settings of Virtual Host, or apachectl -M to see the loaded modules, but to see all settings, there is no such tool, you will have to go through all the files , starting from familiar yourself with the  general structure of the httpd config files.
… script …

The usage is simple: Run it as python  CombineApacheConfig.py . Since there is no additional parameters given, it will retrieve the default Ubuntu apache config file from  /etc/apache2/apache2.conf and generate the result complete config file in /tmp/apache2.combined.conf. If your config file is in different location, then give the input file and output file location.

Note: Apache server-info page http://127.0.0.1/server-info also provide similar information, but not in the config file format. It is in human readable format. The page works only when it is open from the same computer.

Since I could not find how to post comments there, and it works better for me having a repo, I put it into a gist with attribution to hist post: https://gist.github.com/jpluimers/fd300f3a500cbc78cd862d2a248e7b03
I need to adapt it for OpenSuSE; until then run it as this:
python CombineApacheConfig.py /etc/apache2/httpd.conf /tmp/apache2.combined.conf

–jeroen

 


#!/usr/bin/python2.7
# CombineApacheConfig.py
__author__ = 'ben'
import sys, os, os.path, logging, fnmatch
def Help():
print("Usage: python CombineApacheConfig.py inputfile[default:/etc/apache2/apache2.conf] outputfile[default:/tmp/apache2.combined.conf")
def InputParameter():
if len(sys.argv) <> 3:
Help()
return "/etc/apache2/apache2.conf", "/tmp/apache2.combined.conf"
return sys.argv[1], sys.argv[2]
def ProcessMultipleFiles(InputFiles):
Content = ''
LocalFolder = os.path.dirname(InputFiles)
basenamePattern = os.path.basename(InputFiles)
for root, dirs, files in os.walk(LocalFolder):
for filename in fnmatch.filter(files, basenamePattern):
Content += ProcessInput(os.path.join(root, filename))
return Content
def RemoveExcessiveLinebreak(s):
Length = len(s)
s = s.replace(os.linesep + os.linesep + os.linesep, os.linesep + os.linesep)
NewLength = len(s)
if NewLength < Length:
s = RemoveExcessiveLinebreak(s)
return s
def ProcessInput(InputFile):
Content = ''
if logging.root.isEnabledFor(logging.DEBUG):
Content = '# Start of ' + InputFile + os.linesep
with open(InputFile, 'r') as infile:
for line in infile:
stripline = line.strip(' \t')
if stripline.startswith('#'):
continue
if stripline.lower().startswith('include'):
match = stripline.split()
if len(match) == 2:
IncludeFiles = match[1]
IncludeFiles = IncludeFiles.strip('"') #Inserted according to V's comment.
if not IncludeFiles.startswith('/'):
LocalFolder = os.path.dirname(InputFile)
IncludeFiles = os.path.join(LocalFolder, IncludeFiles)
Content += ProcessMultipleFiles(IncludeFiles) + os.linesep
else:
Content += line # if it is not pattern of 'include(optional) path', then continue.
else:
Content += line
Content = RemoveExcessiveLinebreak(Content)
if logging.root.isEnabledFor(logging.DEBUG):
Content += '# End of ' + InputFile + os.linesep + os.linesep
return Content
if __name__ == "__main__":
logging.basicConfig(level=logging.DEBUG, format='[%(asctime)s][%(levelname)s]:%(message)s')
InputFile, OutputFile = InputParameter()
try:
Content = ProcessInput(InputFile)
except Exception as e:
logging.error("Failed to process " + InputFile, exc_info=True)
exit(1)
try:
with open(OutputFile, 'w') as outfile:
outfile.write(Content)
except Exception as e:
logging.error("Failed to write to " + outfile, exc_info=True)
exit(1)
logging.info("Done writing " + OutputFile)

Posted in *nix, *nix-tools, Apache2, Development, Linux, openSuSE, Power User, Python, Scripting, Software Development, SuSE Linux | Leave a Comment »

Tumbleweed on Raspberry Pi 3 – Bug 1084419 – Glibc update to 2.27 causes segfault during name resolution

Posted by jpluimers on 2018/03/15

Need to watch these:

A few notes:

  • It is inside the glibc name resolution
  • IPv6 is OK, IPv4 fails.
  • ping/nslookup (which do not depend on glibc) are OK
  • there is an intermediate fix requiring direct osc downloads

A simple test case

Failing situation

$ curl --silent --show-error http://example.org > /dev/null
Segmentation fault (core dumped)

Succeeding situation

$ curl --silent --show-error http://example.org > /dev/null

Non related, but in hindsight my own stupid fault during a similar update: a post mortem

Most important bits of my external infrastructure - page 1

Most important bits of my external infrastructure – page 1

I thought I had forgot about the SuSEfirewall2 changes (On my research list: migrate from OpenSuSE SuSEfirewall2 to firewalld) so assumed that was the reason I broke one of my secondaries (which runs on a Raspberry Pi 2):

Mistakes like these are the reason to have secondaries in the first place https://infrastatus.wiert.me and do port-mortems.

Which is kind of odd, as the SuSEfirewall2 didn’t throw any warnings like at this similar one:

This one still works because it is on the firewall in front of the Raspberry Pi 2:

(Screenshots of the above URLs are below).

In fact it was another mistake: I had forgotten to make the DHCP lease static, which resulted in a wrong IP address to be assigned upon reboot, instantly making the firewall rules invalid:

I could have fixed this remotely when I had thought about this.

–jeroen

Read the rest of this entry »

Posted in *nix, Development, Hardware Development, Linux, openSuSE, Power User, Raspberry Pi, SuSE Linux, Tumbleweed | 3 Comments »

If I ever have to do bind named work again…

Posted by jpluimers on 2018/03/12

Boy, named can be cryptic.

So here are some links that might help me in the future

jeroen

Posted in *nix, bind-named, DNS, Internet, Linux, Power User | Leave a Comment »

How to Install and Configure Postfix as a Send-Only SMTP Server on Ubuntu 16.04 | DigitalOcean

Posted by jpluimers on 2018/02/16

[WayBackHow to Install and Configure Postfix as a Send-Only SMTP Server on Ubuntu 16.04 | DigitalOcean

Postfix is a *mail transfer agent* (MTA), an application used to send and receive email. In this tutorial, we will install and configure Postfix so that it can be used to send emails by local applications only.

–jeroen

Posted in *nix, Linux, Power User, Ubuntu | Leave a Comment »