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 ‘*nix’ Category

Windows/*n*x: Getting curl to output HTTP status code – Super User

Posted by jpluimers on 2017/10/24

The first trick works in Windowa and nx (thanks [WayBackpvandenberk):

curl -s -o /dev/null -I -w "%{http_code}" http://www.example.org/

Inside a Windows batch file you need to escape the % to %% so you get this:

curl -s -o /dev/null -I -w "%%{http_code}" http://www.example.org/

The second is slick but only works on nx (thanks [WayBackHeath Borders):

#creates a new file descriptor 3 that redirects to 1 (STDOUT)
exec 3>&1
# Run curl in a separate command, capturing output of -w "%{http_code}" into HTTP_STATUS
# and sending the content to this command's STDOUT with -o >(cat >&3)
HTTP_STATUS=$(curl -w "%{http_code}" -o >(cat >&3) 'http://example.com')

[WayBackGetting curl to output HTTP status code? – Super User

–jeroen

Posted in *nix, *nix-tools, bash, Batch-Files, cURL, Development, Power User, Scripting, Software Development | Leave a Comment »

15 Useful ‘sed’ Command Tips and Tricks for Daily Linux System Administration Tasks

Posted by jpluimers on 2017/10/06

In this article we will review sed, the well-known stream editor, and share 15 tips to use it in order to accomplish the goals mentioned earlier, and more.

I like it because 15 Useful ‘sed’ Command Tips and Tricks for Daily Linux System Administration Tasks has a lot of screenshots showing what each expression actually does.

–jeroen

Posted in *nix, *nix-tools, Power User, sed | Leave a Comment »

nojhan/liquidprompt: A full-featured & carefully designed adaptive prompt for Bash & Zsh

Posted by jpluimers on 2017/10/05

Wow: nojhan/liquidprompt: A full-featured & carefully designed adaptive prompt for Bash & Zsh

This is really useful!

via:

Sort of tanslated from the first “via” (note that “mit Alles und Scharf” is hard to translate; it’s somewhere between “everything but the kitchen sink, but done right” and “right on the money”):

Bash Prompt Overkill: https://github.com/nojhan/liquidprompt is a Bash “Prompt doing it all right”-extension, which doesn’t care how much any feature costs as we have cores, gigabytes and SSD.

Liquid Prompt automagically recognises context and enables a plethora of features in the prompt when needed based on that context.

It’s like pixie dust for your prompt.

You can configure everything, but you don’t have to: the out of the box experience is already like pixie dust for your prompt.

It works on OS X too and is part of homebrew:

$ brew install liquidprompt
==> Using the sandbox
==> Downloading https://github.com/nojhan/liquidprompt/archive/v_1.11.tar.gz
==> Downloading from https://codeload.github.com/nojhan/liquidprompt/tar.gz/v_1.11
######################################################################## 100.0%
==> Caveats
Add the following lines to your bash or zsh config (e.g. ~/.bash_profile):
  if [ -f /usr/local/share/liquidprompt ]; then
    . /usr/local/share/liquidprompt
  fi
If you'd like to reconfigure options, you may do so in ~/.liquidpromptrc.
A sample file you may copy and modify has been installed to
  /usr/local/share/liquidpromptrc-dist
Don't modify the PROMPT_COMMAND variable elsewhere in your shell config;
that will break things.
==> Summary
🍺  /usr/local/Cellar/liquidprompt/1.11: 7 files, 125.6K, built in 3 seconds
[jeroenp:~/Versioned] 10s $

–jeroen

Read the rest of this entry »

Posted in *nix, *nix-tools, Apple, bash, bash, Development, Mac OS X / OS X / MacOS, Power User, Scripting, Software Development | Leave a Comment »

Raspberry Pi brexit – changing your locale away from GB when you’ve a different keyboard

Posted by jpluimers on 2017/10/02

A while ago I wrote about -bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) on fresh Raspbian on Raspberry

I thought my locale issues were solved and they sort of were. Until I had to logon locally and managed to get one or more of these characters in my password:

  • ~ (tilde)
  • @ (at)
  • # (hash)
  • \ (backslash)
  • | (pipe)
  • " (double-quote)

Then logon would fail locally but work via ssh. Go figure!

Lot’s of people outside the UK using their Raspberry Pi with keyboard and monitor will now say: you’ve the default GB keyboard layout and your keyboard is not GB.

Bingo!

This is how US keys look when using a GB keyboard layout:

Read the rest of this entry »

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

Oops: OF: /soc/usb at 7e980000: could not get #phy-cells for /phy

Posted by jpluimers on 2017/09/28

 

kvm [1]: Invalid trigger for IRQ4, assuming level low
OF: /soc/usb at 7e980000: could not get #phy-cells for /phy

Via [WayBack] Oops. – Jeroen Wiert Pluimers – Google+

This was after updating my Raspberry Pi 3 with Tumbleweed to 20170920.

Not sure what do do now. Some searches didn’t reveal much:

–jeroen

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

How to Configure and Manage Network Connections Using ‘nmcli’ Tool

Posted by jpluimers on 2017/09/22

Via “In the form over function era: Using Network Manager from the command line” [WayBack]:

As a Linux administrator you’ve got various tools to use in order to configure network connections, such as: nmtui, NetworkManager GUI and nmcli in Linux

Source: How to Configure and Manage Network Connections Using ‘nmcli’ Tool [WayBack]

–jeroen

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

Don’t Use Regular Expressions To Parse IP Addresses!

Posted by jpluimers on 2017/09/21

Interesting piece: Don’t Use Regular Expressions To Parse IP Addresses! [WayBack]

TL;DR:

When have neither then for quad-dotted decimal IPv4 addresses (ignoring for instance octals and grouped quads), this is suitable: regex – Regular expression to match DNS hostname or IP Address? – Stack Overflow [WayBack]

ValidIpAddressRegex = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";

Which explained looks like this:

https://regex101.com/r/Wyr2Zd/1

Regular expression:

/ ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ / g

Explanation:

  • ^ asserts position at start of the string
    • 1st Capturing Group (([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}
      • {3} Quantifier — Matches exactly 3 times
        A repeated capturing group will only capture the last iteration. Put a capturing group around the repeated group to capture all iterations or use a non-capturing group instead if you’re not interested in the data

        • 2nd Capturing Group ([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])
          • 1st Alternative [0-9]
            • Match a single character present in the list below [0-9]
              0-9 a single character in the range between 0 (ASCII 48) and 9 (ASCII 57) (case sensitive)
          • 2nd Alternative [1-9][0-9]
            • Match a single character present in the list below [1-9]
              1-9 a single character in the range between 1 (ASCII 49) and 9 (ASCII 57) (case sensitive)
            • Match a single character present in the list below [0-9]
              0-9 a single character in the range between 0 (ASCII 48) and 9 (ASCII 57) (case sensitive)
          • 3rd Alternative 1[0-9]{2}
            • 1 matches the character 1 literally (case sensitive)
            • Match a single character present in the list below [0-9]{2}
              {2} Quantifier — Matches exactly 2 times
              0-9 a single character in the range between 0 (ASCII 48) and 9 (ASCII 57) (case sensitive)
          • 4th Alternative 2[0-4][0-9]
            • 2 matches the character 2 literally (case sensitive)
            • Match a single character present in the list below [0-4]
              0-4 a single character in the range between 0 (ASCII 48) and 4 (ASCII 52) (case sensitive)
            • Match a single character present in the list below [0-9]
              0-9 a single character in the range between 0 (ASCII 48) and 9 (ASCII 57) (case sensitive)
          • 5th Alternative 25[0-5]
            • 25 matches the characters 25 literally (case sensitive)
            • Match a single character present in the list below [0-5]
              0-5 a single character in the range between 0 (ASCII 48) and 5 (ASCII 53) (case sensitive)
        • \. matches the character . literally (case sensitive)
    • 3rd Capturing Group ([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])
      • 1st Alternative [0-9]
        • Match a single character present in the list below [0-9]
          0-9 a single character in the range between 0 (ASCII 48) and 9 (ASCII 57) (case sensitive)
      • 2nd Alternative [1-9][0-9]
        • Match a single character present in the list below [1-9]
          1-9 a single character in the range between 1 (ASCII 49) and 9 (ASCII 57) (case sensitive)
        • Match a single character present in the list below [0-9]
          0-9 a single character in the range between 0 (ASCII 48) and 9 (ASCII 57) (case sensitive)
      • 3rd Alternative 1[0-9]{2}
        • 1 matches the character 1 literally (case sensitive)
        • Match a single character present in the list below [0-9]{2}
          {2} Quantifier — Matches exactly 2 times
          0-9 a single character in the range between 0 (ASCII 48) and 9 (ASCII 57) (case sensitive)
      • 4th Alternative 2[0-4][0-9]
        • 2 matches the character 2 literally (case sensitive)
        • Match a single character present in the list below [0-4]
          0-4 a single character in the range between 0 (ASCII 48) and 4 (ASCII 52) (case sensitive)
        • Match a single character present in the list below [0-9]
          0-9 a single character in the range between 0 (ASCII 48) and 9 (ASCII 57) (case sensitive)
      • 5th Alternative 25[0-5]
        • 25 matches the characters 25 literally (case sensitive)
        • Match a single character present in the list below [0-5]
          0-5 a single character in the range between 0 (ASCII 48) and 5 (ASCII 53) (case sensitive)
  • $ asserts position at the end of the string, or before the line terminator right at the end of the string (if any)
  • Global pattern flags
    g modifier: global. All matches (don’t return after first match)

–jeroen

Posted in *nix, Communications Development, Development, Internet protocol suite, Network-and-equipment, Power User, Software Development, TCP | Leave a Comment »

Re: [opensuse-factory] dup –no-allow-vendor-change is now default

Posted by jpluimers on 2017/09/15

I totally missed this announcement 2 months ago:

after this update, zypper dup will default to –no-allow-vendor-change, whichhas been the recommended way for Tumbleweed for a long time now.

Source: Re: [opensuse-factory] dup –no-allow-vendor-change is now default

So Dominique was glad to “rub the salt” a bit (:

[WayBack/Archive.isDominique / DimStar‏ @DimStar Replying to @sysrich @jpluimers: for the record: –no-allow-vendor-change has become the default in Tumbleweed, see also http://dominique.leuenberger.net/blog/2017/06/review-of-the-week-201726/

It was documented at least on these places:

–jeroen

Read the rest of this entry »

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

youtube-dl – saving both audio and video without keeping intermediate files seems impossible

Posted by jpluimers on 2017/09/14

Just in case someone has a better alternative than youtube-dl alias:

alias youtube-dl-audio-and-video='youtube-dl --keep-video --extract-audio --audio-quality 0 --audio-format mp3'

It extracts the audio and keeps the video.

The result is that also all intermediate downloads are being kept.

So even after studying the README extensively the only alternative seems to be a double download like this:

youtube-dl-audio-and-video() { youtube-dl --extract-audio --audio-quality 0 --audio-format mp3 $1; youtube-dl $1; }

–jeroen

Posted in *nix, *nix-tools, bash, bash, Development, Power User, Scripting, Software Development | Leave a Comment »

zypper errors on download.opensuse.org

Posted by jpluimers on 2017/09/13

If you see error message like below when performing zypper refresh or zypper dist-upgrade, then please inform the opensuse team (for instance Twitter or the #openSUSE-factory IRC channel) as this is part of the aftermath of the download.opensuse.org trouble that started last week.

Permission to access 'http://download.opensuse.org/ports/aarch64/tumbleweed/repo/oss/suse/setup/descr/appdata-icons.tar.gz' denied.

What happened to me with Raspberry Pi 3 and Tumbleweed is below and fixed because after I got in touch: the data restore had worked out OK, but the permissions didn’t.

I got there as the search for “Permission to access ‘http://download.opensuse.org/ports/aarch64/” got me to [WayBack] TUMBLEWEED Zypper Permission to access:

Unfortunately there was a catastrophic issue last week with the openSUSE download system (read: stuff is still broken and not all mirrors are fully functional).

–jeroen

Read the rest of this entry »

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