aaden-cli 1.6.114 → 1.6.115

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -19179,7 +19179,7 @@ module.exports = JSON.parse('{"name":"axios","version":"0.19.2","description":"P
19179
19179
  /***/ ((module) => {
19180
19180
 
19181
19181
  "use strict";
19182
- module.exports = {"i8":"1.6.114"};
19182
+ module.exports = {"i8":"1.6.115"};
19183
19183
 
19184
19184
  /***/ })
19185
19185
 
@@ -36,9 +36,23 @@ else
36
36
  WHAT="aaden 的 crontab 里没有 do-log,已补上"
37
37
  fi
38
38
 
39
- printf '%s\n' "$NEW" | sudoS crontab -u aaden - || { echo "写 crontab 失败"; exit 1; }
40
- # 读回来确认真的改上了
41
- sudoS crontab -l -u aaden 2>/dev/null | grep -qxF "$WANT" || { echo "改完读回来没有标准的 do-log 行,原样:$LINE"; exit 1; }
39
+ # 新内容先写临时文件再 crontab <文件>:不能 printf | sudoS crontab -,sudoS 自己用 echo 密码 | sudo -S 占了 stdin,
40
+ # 要密码的设备上 crontab 读到的是空 → 整份 crontab 被清空(免密的设备上读到密码那一行、格式不对拒收)。
41
+ # 写之前备份;写完读回来行数少了或没有 do-log 就还原。
42
+ TMP=$(mktemp) && BAK=$(mktemp) || { echo "建临时文件失败"; exit 1; }
43
+ printf '%s\n' "$CUR" > "$BAK"
44
+ printf '%s\n' "$NEW" > "$TMP"
45
+ chmod 644 "$TMP" "$BAK"
46
+ sudoS cp "$BAK" "/etc/aaden/config/crontab-aaden.bak.$(date +%Y%m%d%H%M%S)" 2>/dev/null
47
+ sudoS crontab -u aaden "$TMP" || { echo "写 crontab 失败"; rm -f "$TMP" "$BAK"; exit 1; }
48
+ AFTER=$(sudoS crontab -l -u aaden 2>/dev/null)
49
+ if ! printf '%s\n' "$AFTER" | grep -qxF "$WANT" || [ "$(printf '%s\n' "$AFTER" | grep -c .)" -lt "$(printf '%s\n' "$CUR" | grep -c .)" ]; then
50
+ echo "改完读回来不对,还原原来的 crontab"
51
+ sudoS crontab -u aaden "$BAK"
52
+ rm -f "$TMP" "$BAK"
53
+ exit 1
54
+ fi
55
+ rm -f "$TMP" "$BAK"
42
56
  echo "$WHAT"
43
57
  DEVICE_ID=$(grep -e DeviceId /var/www/html/Resource/config/config.ini 2>/dev/null | cut -d = -f 2 | tr -d '" \r')
44
58
  [ -n "$DEVICE_ID" ] && python3 -c 'import json, sys, urllib.request; urllib.request.urlopen(urllib.request.Request("https://cloud-v2.aaden.io/deviceLog/createEvent", json.dumps({"deviceId": sys.argv[1], "content": sys.argv[2] + " result:0", "type": "系统生成", "operator": "patch ensureDoLogCron"}).encode(), {"Content-Type": "application/json"}), timeout=10)' "$DEVICE_ID" "$WHAT" 2>/dev/null
@@ -37,9 +37,23 @@ else
37
37
  WHAT="aaden 的 crontab 里没有定时的 do-log,已补上每 5 分钟一次"
38
38
  fi
39
39
 
40
- printf '%s\n' "$NEW" | sudoS crontab -u aaden - || { echo "写 crontab 失败"; exit 1; }
41
- # 读回来确认真的改上了
42
- sudoS crontab -l -u aaden 2>/dev/null | grep -qxF "$WANT" || { echo "改完读回来没有标准的 do-log 行,原样:$LINE"; exit 1; }
40
+ # 新内容先写临时文件再 crontab <文件>:不能 printf | sudoS crontab -,sudoS 自己用 echo 密码 | sudo -S 占了 stdin,
41
+ # 要密码的设备上 crontab 读到的是空 → 整份 crontab 被清空(免密的设备上读到密码那一行、格式不对拒收)。
42
+ # 写之前备份;写完读回来行数少了或没有 do-log 就还原。
43
+ TMP=$(mktemp) && BAK=$(mktemp) || { echo "建临时文件失败"; exit 1; }
44
+ printf '%s\n' "$CUR" > "$BAK"
45
+ printf '%s\n' "$NEW" > "$TMP"
46
+ chmod 644 "$TMP" "$BAK"
47
+ sudoS cp "$BAK" "/etc/aaden/config/crontab-aaden.bak.$(date +%Y%m%d%H%M%S)" 2>/dev/null
48
+ sudoS crontab -u aaden "$TMP" || { echo "写 crontab 失败"; rm -f "$TMP" "$BAK"; exit 1; }
49
+ AFTER=$(sudoS crontab -l -u aaden 2>/dev/null)
50
+ if ! printf '%s\n' "$AFTER" | grep -qxF "$WANT" || [ "$(printf '%s\n' "$AFTER" | grep -c .)" -lt "$(printf '%s\n' "$CUR" | grep -c .)" ]; then
51
+ echo "改完读回来不对,还原原来的 crontab"
52
+ sudoS crontab -u aaden "$BAK"
53
+ rm -f "$TMP" "$BAK"
54
+ exit 1
55
+ fi
56
+ rm -f "$TMP" "$BAK"
43
57
  echo "$WHAT"
44
58
  DEVICE_ID=$(grep -e DeviceId /var/www/html/Resource/config/config.ini 2>/dev/null | cut -d = -f 2 | tr -d '" \r')
45
59
  [ -n "$DEVICE_ID" ] && python3 -c 'import json, sys, urllib.request; urllib.request.urlopen(urllib.request.Request("https://cloud-v2.aaden.io/deviceLog/createEvent", json.dumps({"deviceId": sys.argv[1], "content": sys.argv[2] + " result:0", "type": "系统生成", "operator": "patch fixDoLogSchedule"}).encode(), {"Content-Type": "application/json"}), timeout=10)' "$DEVICE_ID" "$WHAT" 2>/dev/null
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aaden-cli",
3
- "version": "1.6.114",
3
+ "version": "1.6.115",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -36,9 +36,23 @@ else
36
36
  WHAT="aaden 的 crontab 里没有 do-log,已补上"
37
37
  fi
38
38
 
39
- printf '%s\n' "$NEW" | sudoS crontab -u aaden - || { echo "写 crontab 失败"; exit 1; }
40
- # 读回来确认真的改上了
41
- sudoS crontab -l -u aaden 2>/dev/null | grep -qxF "$WANT" || { echo "改完读回来没有标准的 do-log 行,原样:$LINE"; exit 1; }
39
+ # 新内容先写临时文件再 crontab <文件>:不能 printf | sudoS crontab -,sudoS 自己用 echo 密码 | sudo -S 占了 stdin,
40
+ # 要密码的设备上 crontab 读到的是空 → 整份 crontab 被清空(免密的设备上读到密码那一行、格式不对拒收)。
41
+ # 写之前备份;写完读回来行数少了或没有 do-log 就还原。
42
+ TMP=$(mktemp) && BAK=$(mktemp) || { echo "建临时文件失败"; exit 1; }
43
+ printf '%s\n' "$CUR" > "$BAK"
44
+ printf '%s\n' "$NEW" > "$TMP"
45
+ chmod 644 "$TMP" "$BAK"
46
+ sudoS cp "$BAK" "/etc/aaden/config/crontab-aaden.bak.$(date +%Y%m%d%H%M%S)" 2>/dev/null
47
+ sudoS crontab -u aaden "$TMP" || { echo "写 crontab 失败"; rm -f "$TMP" "$BAK"; exit 1; }
48
+ AFTER=$(sudoS crontab -l -u aaden 2>/dev/null)
49
+ if ! printf '%s\n' "$AFTER" | grep -qxF "$WANT" || [ "$(printf '%s\n' "$AFTER" | grep -c .)" -lt "$(printf '%s\n' "$CUR" | grep -c .)" ]; then
50
+ echo "改完读回来不对,还原原来的 crontab"
51
+ sudoS crontab -u aaden "$BAK"
52
+ rm -f "$TMP" "$BAK"
53
+ exit 1
54
+ fi
55
+ rm -f "$TMP" "$BAK"
42
56
  echo "$WHAT"
43
57
  DEVICE_ID=$(grep -e DeviceId /var/www/html/Resource/config/config.ini 2>/dev/null | cut -d = -f 2 | tr -d '" \r')
44
58
  [ -n "$DEVICE_ID" ] && python3 -c 'import json, sys, urllib.request; urllib.request.urlopen(urllib.request.Request("https://cloud-v2.aaden.io/deviceLog/createEvent", json.dumps({"deviceId": sys.argv[1], "content": sys.argv[2] + " result:0", "type": "系统生成", "operator": "patch ensureDoLogCron"}).encode(), {"Content-Type": "application/json"}), timeout=10)' "$DEVICE_ID" "$WHAT" 2>/dev/null
@@ -37,9 +37,23 @@ else
37
37
  WHAT="aaden 的 crontab 里没有定时的 do-log,已补上每 5 分钟一次"
38
38
  fi
39
39
 
40
- printf '%s\n' "$NEW" | sudoS crontab -u aaden - || { echo "写 crontab 失败"; exit 1; }
41
- # 读回来确认真的改上了
42
- sudoS crontab -l -u aaden 2>/dev/null | grep -qxF "$WANT" || { echo "改完读回来没有标准的 do-log 行,原样:$LINE"; exit 1; }
40
+ # 新内容先写临时文件再 crontab <文件>:不能 printf | sudoS crontab -,sudoS 自己用 echo 密码 | sudo -S 占了 stdin,
41
+ # 要密码的设备上 crontab 读到的是空 → 整份 crontab 被清空(免密的设备上读到密码那一行、格式不对拒收)。
42
+ # 写之前备份;写完读回来行数少了或没有 do-log 就还原。
43
+ TMP=$(mktemp) && BAK=$(mktemp) || { echo "建临时文件失败"; exit 1; }
44
+ printf '%s\n' "$CUR" > "$BAK"
45
+ printf '%s\n' "$NEW" > "$TMP"
46
+ chmod 644 "$TMP" "$BAK"
47
+ sudoS cp "$BAK" "/etc/aaden/config/crontab-aaden.bak.$(date +%Y%m%d%H%M%S)" 2>/dev/null
48
+ sudoS crontab -u aaden "$TMP" || { echo "写 crontab 失败"; rm -f "$TMP" "$BAK"; exit 1; }
49
+ AFTER=$(sudoS crontab -l -u aaden 2>/dev/null)
50
+ if ! printf '%s\n' "$AFTER" | grep -qxF "$WANT" || [ "$(printf '%s\n' "$AFTER" | grep -c .)" -lt "$(printf '%s\n' "$CUR" | grep -c .)" ]; then
51
+ echo "改完读回来不对,还原原来的 crontab"
52
+ sudoS crontab -u aaden "$BAK"
53
+ rm -f "$TMP" "$BAK"
54
+ exit 1
55
+ fi
56
+ rm -f "$TMP" "$BAK"
43
57
  echo "$WHAT"
44
58
  DEVICE_ID=$(grep -e DeviceId /var/www/html/Resource/config/config.ini 2>/dev/null | cut -d = -f 2 | tr -d '" \r')
45
59
  [ -n "$DEVICE_ID" ] && python3 -c 'import json, sys, urllib.request; urllib.request.urlopen(urllib.request.Request("https://cloud-v2.aaden.io/deviceLog/createEvent", json.dumps({"deviceId": sys.argv[1], "content": sys.argv[2] + " result:0", "type": "系统生成", "operator": "patch fixDoLogSchedule"}).encode(), {"Content-Type": "application/json"}), timeout=10)' "$DEVICE_ID" "$WHAT" 2>/dev/null