23. December 2017

How to start all SAP services on openSUSE

The default installation of SAP Netweaver AS ABAP Developer Edition on openSUSE might not start all services after a reboot.

An indication of the problem: port 3300 is not open. After an attempt to connect from SAP Logon you’ll get following error:

WSAECONNREFUSED: Connection refused

When you logon to the system with SAP you may see that some of SAP processes are running, but not all of them:

root      1471  0.0  0.1 172524 10772 ?        Sl   09:01   0:00 /usr/sap/hostctrl/exe/saphostexec pf=/usr/sap/hostctrl/exe/host_profile
sapadm    1521  0.0  0.0  36892  4700 ?        Ss   09:01   0:00 /usr/lib/systemd/systemd --user
sapadm    1526  0.0  0.0  86200  1716 ?        S    09:01   0:00 (sd-pam)
sapadm    1536  0.1  0.3 348208 32260 ?        Ssl  09:01   0:00 /usr/sap/hostctrl/exe/sapstartsrv pf=/usr/sap/hostctrl/exe/host_profile -D
root      1625  0.0  0.0  25568  5316 ?        Ss   09:01   0:00 /usr/sap/hostctrl/exe/saposcol -l -w60 pf=/usr/sap/hostctrl/exe/host_profile
npladm    1889  0.2  1.1 661916 92220 ?        Ssl  09:01   0:00 /usr/sap/NPL/D00/exe/sapstartsrv pf=/usr/sap/NPL/SYS/profile/NPL_D00_georgik -D -u npladm
npladm    2069  0.0  1.1 661304 89420 ?        Ssl  09:01   0:00 /usr/sap/NPL/ASCS01/exe/sapstartsrv pf=/usr/sap/NPL/SYS/profile/NPL_ASCS01_georgik -D -u npladm

As you can see there are two system accounts running on the system: sapadm, npladm. NPL is in my case System ID. The start command should be executed under npladm identity.

Launch following command as root of the system (change npladm to you own System ID):

su -c "startsap all" -l npladm

The system will start with following messages displayed in the console:

Checking syb Database
-------------------------------------------
starting database NPL ...
Log file: /sybase/NPL/startdb.log
parse level 0: identified message 'Database 'master' is now online.'
parse level 1: identified message 'Database 'tempdb' is now online.'
parse level 2: identified message 'Database 'sybsystemprocs' is now online.'
parse level 3: identified message 'Recovery complete.'
Recovery Complete
startdb completed successfully
Starting Startup Agent sapstartsrv
OK
Instance Service on host georgik started
-------------------------------------------
starting SAP Instance ASCS01
Startup-Log is written to /home/npladm/startsap_ASCS01.log
-------------------------------------------
/usr/sap/NPL/ASCS01/exe/sapcontrol -prot NI_HTTP -nr 01 -function Start
Instance on host rihy started
Starting Startup Agent sapstartsrv
OK
Instance Service on host rihy started
-------------------------------------------
starting SAP Instance D00
Startup-Log is written to /home/npladm/startsap_D00.log
-------------------------------------------
/usr/sap/NPL/D00/exe/sapcontrol -prot NI_HTTP -nr 00 -function Start
Instance on host georgik started

You can check whether port 3300 is open:

netstat -anp | grep 3300
tcp        0      0 0.0.0.0:3300            0.0.0.0:*               LISTEN      20212/gwrd

You should be able logon to the SAP on openSUSE without a problem.

If you’re still not able to access the machine from remote then it’s necessary to check the firewall configuration. openSUSE has a strict firewall when using default installation.

You can change firewall configuration by the command:

yast2 firewall

4. October 2017

Webpack: How to read version from file and render it into React web

Imagine the simple scenario.The string with version is stored in the file, and it is necessary to transport it from the file into a React application using Webpack.

The solution is relatively simple.

The whole idea is to execute child process which will read the file and transfers the content via variable into the application.

You will need DefinePlugin which allows defining a custom variable and transports it into the transpiler.

Update your package.json and add there

new webpack.DefinePlugin({
   __VERSION__: JSON.stringify('1.2.3')
})

Update your compoents to render the version:

... {__VERSION__} ...

Check the application and you should see there version 1.2.3.

Let’s move further and read a value from the file version.txt. You will need child_process. Add following line to package.json:

const childProcess = require('child_process');

Now update our previous code to read the value from the file. It is necessary to wrap the output into JSON.stringify otherwise you won’t be able to render the version properly.

new webpack.DefinePlugin({
   __VERSION__: JSON.stringify(childProcess.execSync('cat version.txt').toString())
})

This command will invoke the cat command and the output of the command will be set to variable.

If you want a little bit more portable version of the script, then use ShellJS instead of a plain cat.

The code with ShellJS will look like this:

cons shell = require('shelljs');

new webpack.DefinePlugin({
   __VERSION__: JSON.stringify(shell.cat('version.txt').toString())
})

11. September 2017

How to increase font size in Wireshark 2.4 on Windows

Wireshark is based on the new version of QT, and it has a similar problem on Windows like pgAdmin 4.

If you have a screen with higher density, the font will be too small.

The solution is to add one parameter for QT engine to handle DPI differently.

Open PowerShell as Administrator and go to the directory with Wireshark open qt.conf file:

cd "C:\Program Files\Wireshark"
notepad qt.conf

Write there following content:

[Platforms]
WindowsArguments = dpiawareness=0

Save the file and start Wireshark.

Note: make sure that the file name is just qt.conf. Notepad could add .txt file extension when saving the file directly from Notepad.

Enjoy bigger font:

21. August 2017

Docker deploy DAB failed on Windows 10: service needs ingress network

Deploying application bundle to Docker Swarm (v17) is pretty straightforward. Simple command on Manager node:

docker deploy georgiktest --bundle-file .\georgiktest.dab

Unfortunately, it failed with message:

Loading bundle from .\georgiktest.dab
Creating network georgiktest_default
Creating service georgiktest_client
Creating service georgiktest_server
failed to create service georgiktest_server: Error response from daemon: rpc error: code = FailedPrecondition desc = service needs ingress network, but no ingress network is present

Solution that worked for me:

docker system prune
docker network create --ingress --driver overlay ingress

Thanks to cabloo for the solution.

11. August 2017

Windows 10 displays different time after reboot from Linux

Using dual-boot Windows and Linux has several advantages. If one system fails to update, you can still work with the other one.

I experienced strange problem that Windows was always shifting the time about 2 hours after rebooting from Linux. One solution was to let Windows determine the time zone, but that worked until next reboot to Linux and back to Windows.

The solution that worked for me was to open regedit.exe and define following key as QWORD set to value 1:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal

Then reboot the machine to Linux and back to Windows and everything was ok. No more time shifts.

Thanks to Ailurus for the solution.

  • Quick search

  • Links

  • Twitter

    Follow @jurajmichalek on twitter.

  • Comments

  • Tags

  • Topics