파일에서 여러 값을 인쇄하는 방법은 무엇입니까? [폐쇄]

파일에서 여러 값을 인쇄하는 방법은 무엇입니까? [폐쇄]
#!/bin/bash
COUNT=100
SIZE=100
INTERVAL=0.2
for myHost in `cat /files0/home/singhtr/input`
do
    echo $myHost

    ping -i $INTERVAL -q -n -s  $SIZE -c $COUNT $myHost|grep -i packet

done

입력 파일:

# cat input
4.2.2.2 abc ATT
8.8.8.8 def BCC

아래와 같이 입력 파일에서 여러 값을 인쇄하는 방법

예상 출력:

IP of the device: 4.2.2.2
Device Name: abc
customer name:ATT
2 packets transmitted, 2 received, 0% packet loss, time 1001ms

등등.

bash/shell 스크립트를 통해 이를 달성하고 싶습니다.

답변1

#!/bin/bash
while read myHost
do
    COUNT=100
    SIZE=100
    INTERVAL=0.2
    IP=$(echo $myHost | cut -d " " -f1)
    NAME=$(echo $myHost | cut -d " " -f2)
    CUSTOMER=$(echo $myHost | cut -d " " -f3)
    PING=$(ping -i $INTERVAL -q -n -s  $SIZE -c $COUNT $IP | grep -i packet)
    echo "IP of the device: $IP"
    echo "Device name: $NAME"
    echo "Customer name: $CUSTOMER"
    echo "$PING"
    echo ""
done < /files0/home/singhtr/input

이것이 문제에 대한 가능한 해결책 중 하나입니다. 출력하고 싶은 것을 cut선택 하면 됩니다 . 그런 다음 field간단한 명령으로 echo출력합니다 . 한 번에 한 줄씩 파일을 읽으려면 다음을 사용할 수 있습니다.

while read LINE
do
 ...
done < FILE

편집하다

정기적으로 스크립트를 실행하려면 스크립트 생성을 고려해야 합니다 . 입력하여 현재 로그인된 사용자를 볼 cronjob수 있습니다 . 일정을 예약하려면 다음을 수행하세요.crontab -lcronjobscronjob

$ crontab -e

crontab을 편집합니다. 예를 들어 다음을 삽입합니다.

*/15 * * * * /path/to/script >> /path/to/log_\`date +%s\` 2>&1

cronjob그러면 15분마다 해당 위치에서 실행되고 Unix 타임스탬프 접미사(예: 1549883612)가 있는 파일에서 발생할 수 있는 오류 /path/to/script와 출력을 기록하는 스크립트가 생성됩니다 ./path/to/log_

답변2

음...Bash의 세부 사항을 숙달해야 합니다. :-) 이제 몇 백 야드 떨어져 있습니다.

이렇게 하면 시작됩니다.

#!/bin/bash

echo ----- reading one field at a time
for myhost in `cat ips`
do
        echo $myhost
done

echo
echo ----- reading and printing one line at a time

while read line
do
        echo $line
done < ips

echo ----- separating fields
while read line
do
        ip=$( cut -d' ' -f1 <<< "$line" )
        dev=$( cut -d' ' -f2 <<< "$line" )
        cust=$( cut -d' ' -f3 <<< "$line" )

        echo IP of device: $ip
        echo device name: $dev
        echo customer name: $cust

        #do your ping here
        echo
done < ips

관련 세부정보는 다음에서 확인할 수 있습니다.

$ 명 컷

$ man bash -> "SHELL BUILTIN COMMANDS" 섹션, 명령에 대한 하위 섹션

"<<<" 정보:

$ man bash -> "여기에 문자열" 섹션

또는 여기에서 문자열 대신 echo $line ...을 사용하십시오(<<<).

echo $line | cut -d' ' -f1 등

관련 정보