다음과 같이 많은 HTML 형식이 포함된 Linux VPS가 있습니다.
<table>
<thead>
<tr>
<th>ver</th>
<th>link</th>
</tr>
</thead>
<tbody>
<tr>
<td>1.0.1</td>
<td><a href="http://speedtest.tokyo2.linode.com/100MB-tokyo2.bin">download</a></td>
</tr>
<tr>
<td>1.0.2</td>
<td><a href="http://speedtest.singapore.linode.com/100MB-singapore.bin">download</a></td>
</tr>
<tr>
<td>1.0.3</td>
<td><a href="http://speedtest.fremont.linode.com/100MB-fremont.bin">download</a></td>
</tr>
<tr>
<td>1.0.4</td>
<td><a href="http://speedtest.dallas.linode.com/100MB-dallas.bin">download</a></td>
</tr>
<tr>
<td>1.0.5</td>
<td><a href="http://speedtest.atlanta.linode.com/100MB-atlanta.bin">download</a></td>
</tr>
</tbody>
</table>
양식은 버전 번호와 파일 다운로드 링크만 포함되어 비교적 간단합니다.
쉘 스크립트를 사용하여 테이블의 URL에 액세스하여 원격 파일의 날짜와 크기를 가져온 다음 이 정보를 테이블에 업데이트하고 싶습니다.
그들은 결국 다음과 같이 보일 것입니다:
질문을 하기 전에 컬 테스트가 표준 출력에서 파일 정보를 볼 수 있는 컬 및 wget 문서를 살펴봤지만 이를 수행하기 위해 자동화된 스크립트를 작성하는 방법을 모르겠습니다. 방금 Linux를 접하게 되었는데 도움을 주셨으면 좋겠습니다. 감사합니다!
답변1
그러면 헤더에서 얻을 수 있는 파일 정보가 반환됩니다.
curl --head http://speedtest.newark.linode.com/100MB-newark.bin
다음을 반환합니다.
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 28 Sep 2019 12:47:03 GMT
Content-Type: application/octet-stream
Content-Length: 104857600
Last-Modified: Thu, 01 Aug 2019 16:35:25 GMT
Connection: keep-alive
ETag: "5d4314cd-6400000"
Accept-Ranges: bytes
이것이 필요한 경우 bash 스크립트를 작성하여 이 정보가 포함된 테이블/html 파일을 생성할 수 있습니다.
다음과 같은 스크립트에서 사용할 수 있습니다.
#!/bin/sh
cat << EOF
<table>
<thead>
<tr>
<th>ver</th>
<th>link</th>
<th>modified</th>
<th>size</th>
</tr>
</thead>
<tbody>
EOF
$i=1
cat urls.list | while read url
do
file_info=$(curl -s --head "$url")
last_modified=$(echo "$file_info" | grep Last-Modified | cut -c16- | tr -d '\r\n')
content_length=$(echo "$file_info" | grep Content-Length | cut -c17- | tr -d '\r\n')
cat << EOF
<tr>
<td>1.0.$i</td>
<td><a href="$url">download</a></td>
<td>$last_modified</td>
<td>$content_length</td>
</tr>
EOF
let "i++"
done
cat << EOF
</tbody>
</table>
EOF
urls.list
각 줄에 URL이 포함되어야 하는 파일을 만들어야 합니다 . 그렇게:
http://speedtest.newark.linode.com/100MB-newark.bin
http://speedtest.tokyo2.linode.com/100MB-tokyo2.bin
이 스크립트를 실행하면 다음과 같은 출력이 생성됩니다.
<table>
<thead>
<tr>
<th>ver</th>
<th>link</th>
<th>modified</th>
<th>size</th>
</tr>
</thead>
<tbody>
<tr>
<td>1.0.1</td>
<td><a href="http://speedtest.newark.linode.com/100MB-newark.bin">download</a></td>
<td>Thu, 01 Aug 2019 16:35:25 GMT</td>
<td>104857600</td>
</tr>
</tbody>
</table>
특정 버전 이름이 필요한 경우 구분 기호(예: )를 사용하여 목록 파일에 저장할 수 있습니다 version name|url
. 그리고 코드를 약간 조정해야 합니다. 이제 URL 목록의 순서를 따릅니다.