Files
infix/package/profeth/set_network_parameters
Joachim Wiberg 4942a53483 package/profeth: add set_network_parameters script
Allow profeth to set IP address, netmask and gateway on PROFINET set.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2023-03-06 15:08:09 +01:00

90 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env sh
############################################
# Script for manipulating network settings #
############################################
#
# This is useful for example on Ubuntu.
#
# You need to adapt this script to fit your Linux distribution.
# Keep the script name, and use the same command line arguments.
#
# Make sure that the script path is available from your Profinet application.
# In case of problems, try the script manually from the directory where your
# application is located.
if [ $# -ne 6 ]; then
echo "Usage: ${0} interfacename ip netmask gateway hostname permanent"
echo " where:"
echo " interfacename: Network interface name, for example eth0"
echo " ip: IPv4 address, for example 192.168.0.50"
echo " netmask: Netmask"
echo " gateway: Default gateway"
echo " hostname: Host name, for example my_laptop_3"
echo " permanent: 1 if changes are permanent, 0 if temporary"
exit 1
fi
INTERFACE=$1
IP_ADDRESS=$2
NETMASK=$3
DEFAULT_GATEWAY=$4
HOSTNAME=$5
SET_VALUES_PERMANENTLY=$6
# From a Profinet point of view there is no need to change the
# host name of the Linux machine. The p-net stack will use the
# name as station name internally.
SKIP_SETTING_HOSTNAME=true
echo "Network script for ${INTERFACE}: " \
"Set IP ${IP_ADDRESS} " \
"Netmask ${NETMASK} " \
"Gateway ${DEFAULT_GATEWAY} " \
"Permanent: ${SET_VALUES_PERMANENTLY} " \
"Hostname: ${HOSTNAME} " \
"Skip setting hostname: ${SKIP_SETTING_HOSTNAME}"
# There is no need to set the changes permanently,
# as the p-net stack will set the IP parameters on each start.
# You are however free to use it if you like.
if ! ip address flush label $INTERFACE; then
echo "Failed to flush network interface"
exit 1
fi
if ! ip address add $IP_ADDRESS/$NETMASK dev $INTERFACE; then
echo "Failed to set IP address and netmask"
exit 1
fi
if ! ip link set dev $INTERFACE up; then
echo "Failed to set network interface up"
exit 1
fi
if [ "${DEFAULT_GATEWAY}" != "0.0.0.0" ]; then
if ! ip route add default via $DEFAULT_GATEWAY; then
echo "Failed to set default gateway"
exit 1
fi
else
echo "No valid default gateway given. Skipping setting default gateway."
fi
if [ "$SKIP_SETTING_HOSTNAME" = false ]; then
if ! hostname $HOSTNAME; then
echo "Failed to set hostname to $HOSTNAME"
hostname_len=${#HOSTNAME}
if [ $hostname_len -gt 64 ]; then
echo "The given hostname length is ${hostname_len} characters." \
"Many Linux systems have a limit of 64 characters. The p-net stack uses" \
"a longer stationname internally."
fi
exit 1
fi
fi
exit 0