Простой скрипт отправки данных на сервер

What's the difference and when would I want to use

eth0:1— это дополнительный интерфейс -, например, вы можете отключить дополнительный интерфейс -независимо или пометить трафик с помощью идентификатора VLAN ID на дополнительном интерфейсе -.

ifconfig tool doesn't seem to find the IP when it's added as IPADDR1 under the same ifcfg file

Вы должны использовать пакет iproute 2 вместо инструментов net -. Вы можете найти свой второй IP-адрес с помощью ip addr. ip route2 — это новый пакет для сетевого пользовательского пространства. `ifconfig устарел

утилиты net -устарели с помощью iproute2

$ ip addr
 1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
     inet 127.0.0.1/8 scope host lo
        valid_lft forever preferred_lft forever
     inet6 ::1/128 scope host 
        valid_lft forever preferred_lft forever
 2: enp1s0:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
     link/ether 52:54:00:8f:8c:86 brd ff:ff:ff:ff:ff:ff
     inet 192.168.122.197/24 brd 192.168.122.255 scope global dynamic noprefixroute enp1s0
        valid_lft 3546sec preferred_lft 3546sec
     inet 192.168.122.11/24 brd 192.168.122.255 scope global secondary noprefixroute enp1s0
        valid_lft forever preferred_lft forever
     inet6 fe80::4d61:1d19:14a4:a8dc/64 scope link noprefixroute 
        valid_lft forever preferred_lft forever
0
10.11.2020, 14:49
2 ответа

Не используйте эхо при вызове команды.

Вы можете либо воздержаться от использования одинарных кавычек. Если вы решите это сделать, вам нужно избежать кавычек в вызове команды:

curl -i -k -X POST -H "Content-Type: application/json" --data "{ \"id\":2,\"timestamp\": \"${a}\",\"data\": \"${D}\"}" https:......

Или, если вы хотите использовать одинарные кавычки, вам нужно выполнить конкатенацию строк, что означает конец ваших одинарных кавычек перед вашей переменной и продолжение их после (, как предложил «никто»:

curl -i -k -X POST -H "Content-Type: application/json" --data '{ "id":2,"timestamp": "'"${a}"'","data": "'"${D}"'"}' https:......

Если вы настаиваете на использовании эха, вам нужно использовать вывод эха в вызове:

curl -i -k -X POST -H "Content-Type: application/json" --data "{ \"id\":2,\"timestamp\": \"$(echo ${a})\",\"data\": \"$(echo ${D})\"}" https:......
1
18.03.2021, 22:50

Во-первых, у вас неверный синтаксис цикла. for i in 1.. 10запустится три раза. Один раз для 1, один раз для ..и один раз для 10. Чтобы получить числа от одного до десяти, вам нужно for i in {1..10}. Затем используйте одинарные кавычки внутри вашей команды curl, чтобы вы могли использовать двойные кавычки снаружи, чтобы переменные были расширены. Примерно так:

#!/bin/bash
for i in {1..10}
do
    a=$(date '+%s')
    D=$(sensors)

    curl -i -k -X POST -H "Content-Type: application/json" \
        --data "{ 'id':2,'timestamp':$a,'data':$D}" https:......
    sleep 1
done

Или,если вам нужно, чтобы и имя тега, и значение были заключены в кавычки, используйте:

#!/bin/bash
for i in {1..10}
do
    a=$(date '+%s')
    D=$(sensors)

    curl -i -k -X POST -H "Content-Type: application/json" \
        --data "{ 'id':'2','timestamp':'$a','data':'$D'}" https:......
    sleep 1
done
0
18.03.2021, 22:50

Теги

Похожие вопросы