여러 IP를 가져와 스크립트에 변수로 추가하려면 어떻게 해야 합니까?

여러 IP를 가져와 스크립트에 변수로 추가하려면 어떻게 해야 합니까?

내 스크립트에 명령문을 추가하려고 합니다 awk. 또는:

if; else; then if eth0:4 is a match then put in eth0:4 IP

NIC에 여러 IP를 할당하는 경우 스크립트에서 IP를 변수로 어떻게 얻습니까?

inet 133.16.8.9/16 brd 133.8.255.255 scope global eth0
inet 133.8.5.8/16 brd 133.8.255.255 scope global secondary eth0:1
inet 133.8.5.7/16 brd 133.8.255.255 scope global secondary eth0:2
inet 133.8.5.6/16 brd 133.8.255.255 scope global secondary eth0:3
inet 133.8.5/16 brd 133.8.255.255 scope global secondary eth0:4
inet 133.8.5.4/16 brd 133.8.255.255 scope global secondary eth0:5
inet 133.8.5.3/16 brd 133.8.255.255 scope global secondary eth0:6
inet 133.8.5.2/16 brd 133.8.255.255 scope global secondary eth0:7

답변1

var=$(awk '/eth0:4/ {print $2}' file)"

답변2

나는 또한 이것을 시도했는데, 내가 가진 상황은 이 서버에서 7개의 응용 프로그램이 실행되고 있고 각 응용 프로그램이 다른 IP를 사용한다는 것입니다. 따라서 내가 해야 할 일은 응용 프로그램이 app4인 경우 다음을 수행하는 것입니다.

/sbin/ip addr ls eth0 | awk '/inet / {print $2, $8}'
133.8.5.9/16 eth0
133.8.5.8/16 eth0:1
133.8.5.7/16 eth0:2
133.8.5.6/16 eth0:3
133.8.5.5/16 eth0:4
133.8.5.4/16 eth0:5
133.8.5.3/16 eth0:6
133.8.5.2/16 eth0:7

app4인 경우 eth0:4의 IP를 제공하지만 이 스크립트는 모든 앱에서 작동해야 합니다.

내 스크립트의 예는 다음과 같습니다.

JBOSS=$1
JBOSS_ENV=`echo -e ${JBOSS} | awk '{print substr($0,7)}'`
JBOSS_ETH=`echo -e ${JBOSS} | awk '{print substr($0,10)}'`
JBOSS_SVR=`uname -n`
JBOSS_IP=`/sbin/ifconfig eth0:${JBOSS_ETH} | sed -n '/inet addr/s/.*addr.\([^ ]*\) .*/\1/p'`
JBOSS_PID=`ps aux | grep -v grep | grep -v bash | grep $1 | awk '{print $2}'`
JBOSS_TMP='/home/tomcat/scripts/'${JBOSS_ENV}'.jboss_thread_dump.html'
SCRIPT_PATH=`dirname "$0"`; SCRIPT_PATH=`eval "cd \"$SCRIPT_PATH\" && pwd"`

if [[ -z ${JBOSS_PID} ]]; then

echo "Subject: ${JBOSS_ENV} JBOSS Thread Dump from ${JBOSS_SVR}" >> $JBOSS_TMP
echo -e "\nContent-Type: text/html; charset="us-ascii"" >> $JBOSS_TMP
echo -e "\nJBOSS Script Path: ${SCRIPT_PATH}\n\nJBOSS Environment: ${JBOSS_ENV}\n" >> $JBOSS_TMP

echo "<html><body>" >> $JBOSS_TMP

/usr/local/${JBOSS}/jboss-soa-p.5.0.0/jboss-as/bin/twiddle.sh --server=${JBOSS_IP} --user=***** --password=***** invoke jboss.system:type=ServerInfo listThreadDump >> $JBOSS_TMP

echo "</body></html>" >> $JBOSS_TMP

   cat $JBOSS_TMP | grep -i "FOUND DEADLOCK" > /dev/null; status=$?
if [ $status = 0 ]; then
   cat $JBOSS_TMP | mail -s "${JBOSS} ${JBOSS_SVR} DEADLOCK FOUND" MYEMAILADDRESS
fi

   cat $JBOSS_TMP | grep "ERROR" > /dev/null; status=$?
if [ $status = 0 ]; then
   cat $JBOSS_TMP | mail -s "${JBOSS} ${JBOSS_SVR} ERROR FOUND" MYEMAILADDRESS fi

/usr/sbin/sendmail MYEMAILADDRESS < $JBOSS_TMP

rm $JBOSS_TMP

exit

fi

스크립트는 이런 식으로 작동하지만 ifconfig 대신 IP를 사용해 보았습니다. 또한 모든 추가 에코와 불필요한 코드를 제거하고 싶습니다.

관련 정보