mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-30 04:33:00 +02:00
Allow profeth to set IP address, netmask and gateway on PROFINET set. Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
90 lines
2.7 KiB
Bash
Executable File
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
|