Initial commit
This commit is contained in:
28
scripts/ssh/activate-windows.sh
Executable file
28
scripts/ssh/activate-windows.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/activate-windows.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/activate-windows-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] 上傳 Windows 啟用腳本到 $USER_NAME@$HOST"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/activate-windows.ps1" >/dev/null
|
||||
|
||||
echo "[*] 執行 Windows 啟用程序,log -> $LOG"
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/activate-windows.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo ""
|
||||
echo "[*] 完成。紀錄已儲存: $LOG"
|
||||
28
scripts/ssh/apply-ui-to-user.sh
Executable file
28
scripts/ssh/apply-ui-to-user.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
TARGET_USER="${TARGET_USER:-user}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/apply-ui-to-user.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/apply-ui-to-user-${HOST}-${TARGET_USER}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] Uploading apply-ui-to-user.ps1 to $USER_NAME@$HOST"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/apply-ui-to-user.ps1" >/dev/null
|
||||
|
||||
echo "[*] Applying UI settings to '$TARGET_USER' on $HOST, log -> $LOG"
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/apply-ui-to-user.ps1 -TargetUser $TARGET_USER" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "[*] Done. Saved: $LOG"
|
||||
36
scripts/ssh/check-winrm.sh
Executable file
36
scripts/ssh/check-winrm.sh
Executable file
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/check-winrm.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/check-winrm-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] Checking WinRM status on $USER_NAME@$HOST"
|
||||
echo "[*] Uploading WinRM check script..."
|
||||
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" "$USER_NAME@$HOST:C:/Users/$USER_NAME/check-winrm.ps1" >/dev/null
|
||||
|
||||
echo "[*] Running WinRM configuration check, log -> $LOG"
|
||||
echo "=================================================================="
|
||||
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/check-winrm.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "=================================================================="
|
||||
echo "[*] WinRM check completed. Log saved: $LOG"
|
||||
echo ""
|
||||
echo "Next steps based on results:"
|
||||
echo " ✅ If WinRM is ready -> Create WinRM connection scripts"
|
||||
echo " ⚠️ If partially ready -> Run enable-winrm.sh to fix configuration"
|
||||
echo " ❌ If not configured -> Run enable-winrm.sh to set up WinRM"
|
||||
28
scripts/ssh/configure-ime.sh
Executable file
28
scripts/ssh/configure-ime.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
TARGET_USER="${TARGET_USER:-User}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/configure-ime.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/configure-ime-${HOST}-${TARGET_USER}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] Uploading configure-ime.ps1 to $USER_NAME@$HOST"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/configure-ime.ps1" >/dev/null
|
||||
|
||||
echo "[*] Configuring IME for '$TARGET_USER' on $HOST, log -> $LOG"
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/configure-ime.ps1 -TargetUser $TARGET_USER" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "[*] Done. Saved: $LOG"
|
||||
31
scripts/ssh/debug-winrm-network.sh
Executable file
31
scripts/ssh/debug-winrm-network.sh
Executable file
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-pc-74269}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/debug-winrm-network.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/debug-winrm-network-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] Debugging WinRM network connectivity on $USER_NAME@$HOST"
|
||||
echo "[*] Uploading diagnostic script..."
|
||||
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" "$USER_NAME@$HOST:C:/Users/$USER_NAME/debug-winrm-network.ps1" >/dev/null
|
||||
|
||||
echo "[*] Running WinRM network diagnostics, log -> $LOG"
|
||||
echo "=================================================================="
|
||||
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/debug-winrm-network.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "=================================================================="
|
||||
echo "[*] WinRM network diagnostics completed. Log saved: $LOG"
|
||||
47
scripts/ssh/enable-winrm.sh
Executable file
47
scripts/ssh/enable-winrm.sh
Executable file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/enable-winrm.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/enable-winrm-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] Enabling WinRM on $USER_NAME@$HOST"
|
||||
echo "[*] This will configure PowerShell Remoting and WinRM service"
|
||||
echo ""
|
||||
echo "⚠️ WARNING: This script will enable Basic authentication and unencrypted"
|
||||
echo " communication for testing. Consider security implications for production."
|
||||
echo ""
|
||||
read -p "Continue? [y/N] " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo "Aborted."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[*] Uploading WinRM enablement script..."
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" "$USER_NAME@$HOST:C:/Users/$USER_NAME/enable-winrm.ps1" >/dev/null
|
||||
|
||||
echo "[*] Running WinRM configuration (requires Administrator), log -> $LOG"
|
||||
echo "=================================================================="
|
||||
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/enable-winrm.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "=================================================================="
|
||||
echo "[*] WinRM configuration completed. Log saved: $LOG"
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo " 1. Run ./check-winrm.sh to verify configuration"
|
||||
echo " 2. Test WinRM connection from this machine"
|
||||
echo " 3. If successful, update existing scripts to use WinRM"
|
||||
27
scripts/ssh/firewall-allow-ssh.sh
Executable file
27
scripts/ssh/firewall-allow-ssh.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/firewall-allow-ssh.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/firewall-allow-ssh-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] Uploading firewall-allow-ssh.ps1 to $USER_NAME@$HOST"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/firewall-allow-ssh.ps1" >/dev/null
|
||||
|
||||
echo "[*] Running on $HOST, log -> $LOG"
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/firewall-allow-ssh.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "[*] Done. Saved: $LOG"
|
||||
31
scripts/ssh/fix-winrm.sh
Executable file
31
scripts/ssh/fix-winrm.sh
Executable file
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/fix-winrm.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/fix-winrm-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] Fixing remaining WinRM configuration issues on $USER_NAME@$HOST"
|
||||
echo "[*] Uploading fix script..."
|
||||
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" "$USER_NAME@$HOST:C:/Users/$USER_NAME/fix-winrm.ps1" >/dev/null
|
||||
|
||||
echo "[*] Running WinRM configuration fixes, log -> $LOG"
|
||||
echo "=================================================================="
|
||||
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/fix-winrm.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "=================================================================="
|
||||
echo "[*] WinRM fixes completed. Log saved: $LOG"
|
||||
30
scripts/ssh/install-apps.sh
Executable file
30
scripts/ssh/install-apps.sh
Executable file
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/install-apps.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/install-apps-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] 上傳應用程式安裝腳本到 $USER_NAME@$HOST"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/install-apps.ps1" >/dev/null
|
||||
|
||||
echo "[*] 執行應用程式安裝 (AnyDesk, LINE, Chrome, 7zip, Adobe Reader)"
|
||||
echo " 這可能需要 5-15 分鐘,依據網路速度而定"
|
||||
echo " Log -> $LOG"
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/install-apps.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo ""
|
||||
echo "[*] 安裝完成。紀錄已儲存: $LOG"
|
||||
27
scripts/ssh/install-cports.sh
Executable file
27
scripts/ssh/install-cports.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/install-cports.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/install-cports-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] Uploading install-cports.ps1 to $USER_NAME@$HOST"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/install-cports.ps1" >/dev/null
|
||||
|
||||
echo "[*] Running on $HOST, log -> $LOG"
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/install-cports.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "[*] Done. Saved: $LOG"
|
||||
29
scripts/ssh/install-nirsoft.sh
Executable file
29
scripts/ssh/install-nirsoft.sh
Executable file
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/install-nirsoft.ps1"
|
||||
CONFIG="$HERE/nirsoft-config.json"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/install-nirsoft-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10 -o ServerAliveInterval=30)
|
||||
|
||||
echo "[*] Uploading install-nirsoft.ps1 and nirsoft-config.json"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" "$CONFIG" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/" >/dev/null
|
||||
|
||||
echo "[*] Running on $HOST — this downloads ~16 archives, may take a few minutes"
|
||||
echo "[*] Log -> $LOG"
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/install-nirsoft.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "[*] Done. Saved: $LOG"
|
||||
27
scripts/ssh/install-telegram.sh
Executable file
27
scripts/ssh/install-telegram.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/install-telegram.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/install-telegram-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] Uploading install-telegram.ps1 to $USER_NAME@$HOST"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/install-telegram.ps1" >/dev/null
|
||||
|
||||
echo "[*] Running installer on $HOST, log -> $LOG"
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/install-telegram.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "[*] Done. Saved: $LOG"
|
||||
27
scripts/ssh/install-thunderbird.sh
Executable file
27
scripts/ssh/install-thunderbird.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/install-thunderbird.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/install-thunderbird-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] Uploading install-thunderbird.ps1 to $USER_NAME@$HOST"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/install-thunderbird.ps1" >/dev/null
|
||||
|
||||
echo "[*] Running installer on $HOST, log -> $LOG"
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/install-thunderbird.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "[*] Done. Saved: $LOG"
|
||||
52
scripts/ssh/nirsoft-dump.sh
Executable file
52
scripts/ssh/nirsoft-dump.sh
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/nirsoft-dump.ps1"
|
||||
DUMP_DIR="$HERE/dumps"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/nirsoft-dump-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$DUMP_DIR" "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] Uploading nirsoft-dump.ps1 to $USER_NAME@$HOST"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/nirsoft-dump.ps1" >/dev/null
|
||||
|
||||
echo "[*] Running dump on $HOST (this takes ~1-2 min), log -> $LOG"
|
||||
OUT=$(sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/nirsoft-dump.ps1" \
|
||||
2>&1 | tee "$LOG")
|
||||
|
||||
REMOTE_ZIP=$(echo "$OUT" | grep '^DUMP_ZIP:' | awk '{print $2}' | tr -d '\r')
|
||||
REMOTE_SIZE=$(echo "$OUT" | grep '^DUMP_SIZE:' | awk '{print $2}' | tr -d '\r')
|
||||
|
||||
if [[ -z "$REMOTE_ZIP" ]]; then
|
||||
echo "[!] Could not find DUMP_ZIP line in output" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Convert Windows path to forward-slash form for scp + basename
|
||||
REMOTE_ZIP_SCP=$(echo "$REMOTE_ZIP" | sed 's|\\|/|g')
|
||||
LOCAL_ZIP="$DUMP_DIR/$(basename "$REMOTE_ZIP_SCP")"
|
||||
|
||||
echo ""
|
||||
echo "[*] Pulling zip back: $REMOTE_ZIP_SCP (${REMOTE_SIZE} bytes) -> $LOCAL_ZIP"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" \
|
||||
"$USER_NAME@$HOST:$REMOTE_ZIP_SCP" "$LOCAL_ZIP" >/dev/null
|
||||
|
||||
# Clean up remote copy
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"del \"$REMOTE_ZIP\"" >/dev/null 2>&1 || true
|
||||
|
||||
echo ""
|
||||
echo "[OK] Dump saved: $LOCAL_ZIP"
|
||||
echo " Unzip with: unzip -l \"$LOCAL_ZIP\" (to list)"
|
||||
echo " unzip \"$LOCAL_ZIP\" -d \"${LOCAL_ZIP%.zip}/\" (to extract)"
|
||||
26
scripts/ssh/recon.sh
Executable file
26
scripts/ssh/recon.sh
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/recon.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/recon-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] Uploading recon.ps1 to $USER_NAME@$HOST"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" "$USER_NAME@$HOST:C:/Users/$USER_NAME/recon.ps1" >/dev/null
|
||||
|
||||
echo "[*] Running recon on $HOST, log -> $LOG"
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/recon.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "[*] Done. Saved: $LOG"
|
||||
28
scripts/ssh/remove-apps.sh
Executable file
28
scripts/ssh/remove-apps.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/remove-apps.ps1"
|
||||
CONFIG="$HERE/remove-apps-config.json"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/remove-apps-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] Uploading remove-apps.ps1 and remove-apps-config.json"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" "$CONFIG" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/" >/dev/null
|
||||
|
||||
echo "[*] Running on $HOST, log -> $LOG"
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/remove-apps.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "[*] Done. Saved: $LOG"
|
||||
33
scripts/ssh/remove-windows-ai.sh
Executable file
33
scripts/ssh/remove-windows-ai.sh
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
MODE="${MODE:-Apply}" # Apply | Revert
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/remove-windows-ai.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/remove-windows-ai-${HOST}-${MODE}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10 -o ServerAliveInterval=30)
|
||||
|
||||
echo "[*] Uploading remove-windows-ai.ps1 to $USER_NAME@$HOST"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/remove-windows-ai.ps1" >/dev/null
|
||||
|
||||
echo "[*] Mode=$MODE. Running on $HOST — this can take several minutes"
|
||||
echo "[*] Log -> $LOG"
|
||||
# Force Windows PowerShell 5.1 (powershell.exe), not pwsh 7.
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/remove-windows-ai.ps1 -Mode $MODE" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "[*] Done. Saved: $LOG"
|
||||
echo ""
|
||||
echo "NOTE: A reboot is recommended. Reboot with:"
|
||||
echo " sshpass -p '$PASS' ssh $USER_NAME@$HOST 'shutdown /r /t 5'"
|
||||
27
scripts/ssh/rename-hide-accounts.sh
Executable file
27
scripts/ssh/rename-hide-accounts.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/rename-hide-accounts.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/rename-hide-accounts-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] Uploading rename-hide-accounts.ps1 to $USER_NAME@$HOST"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/rename-hide-accounts.ps1" >/dev/null
|
||||
|
||||
echo "[*] Running on $HOST, log -> $LOG"
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/rename-hide-accounts.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "[*] Done. Saved: $LOG"
|
||||
33
scripts/ssh/setup-thunderbird.sh
Executable file
33
scripts/ssh/setup-thunderbird.sh
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/setup-thunderbird.ps1"
|
||||
CONFIG="$HERE/thunderbird-config.json"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/setup-thunderbird-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
if [[ ! -f "$CONFIG" ]]; then
|
||||
echo "[!] Missing $CONFIG — please edit thunderbird-config.json first" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[*] Uploading setup-thunderbird.ps1 and thunderbird-config.json"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" "$CONFIG" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/" >/dev/null
|
||||
|
||||
echo "[*] Running setup on $HOST, log -> $LOG"
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/setup-thunderbird.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "[*] Done. Saved: $LOG"
|
||||
99
scripts/ssh/test-winrm-connection.sh
Executable file
99
scripts/ssh/test-winrm-connection.sh
Executable file
@@ -0,0 +1,99 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
echo "=== Testing WinRM Connection to $HOST ==="
|
||||
echo ""
|
||||
|
||||
# Test 1: Check if PowerShell Core is installed
|
||||
echo "[1/4] Checking PowerShell Core availability..."
|
||||
if command -v pwsh >/dev/null 2>&1; then
|
||||
echo "✅ PowerShell Core found: $(pwsh --version)"
|
||||
else
|
||||
echo "❌ PowerShell Core not found"
|
||||
echo "Install with: brew install powershell"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Test 2: Test basic network connectivity to WinRM port
|
||||
echo ""
|
||||
echo "[2/4] Testing network connectivity to WinRM port 5985..."
|
||||
if nc -z "$HOST" 5985; then
|
||||
echo "✅ Port 5985 is reachable"
|
||||
else
|
||||
echo "❌ Cannot reach port 5985 on $HOST"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Test 3: Test HTTP WinRM endpoint with curl
|
||||
echo ""
|
||||
echo "[3/4] Testing WinRM HTTP endpoint..."
|
||||
WINRM_RESPONSE=$(curl -s -w "%{http_code}" -o /dev/null --max-time 10 \
|
||||
"http://$HOST:5985/wsman" \
|
||||
-H "Content-Type: application/soap+xml;charset=UTF-8" \
|
||||
-H "SOAPAction: http://schemas.xmlsoap.org/ws/2004/09/enumeration/Enumerate" \
|
||||
--data '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header/><soap:Body><wsen:Enumerate xmlns:wsen="http://schemas.xmlsoap.org/ws/2004/09/enumeration"><wsen:Filter xmlns:wsman="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">SELECT * FROM Win32_Service</wsen:Filter></wsen:Enumerate></soap:Body></soap:Envelope>' 2>/dev/null || echo "000")
|
||||
|
||||
if [ "$WINRM_RESPONSE" = "401" ]; then
|
||||
echo "✅ WinRM endpoint responding (401 = authentication required, expected)"
|
||||
elif [ "$WINRM_RESPONSE" = "500" ]; then
|
||||
echo "✅ WinRM endpoint responding (500 = server error, but WinRM is there)"
|
||||
else
|
||||
echo "⚠️ WinRM endpoint response: $WINRM_RESPONSE (may still work with PowerShell)"
|
||||
fi
|
||||
|
||||
# Test 4: Test PowerShell remoting
|
||||
echo ""
|
||||
echo "[4/4] Testing PowerShell remoting session..."
|
||||
pwsh -c "
|
||||
try {
|
||||
\$secpass = ConvertTo-SecureString '$PASS' -AsPlainText -Force
|
||||
\$cred = New-Object System.Management.Automation.PSCredential('$USER_NAME', \$secpass)
|
||||
|
||||
Write-Host 'Attempting to create PowerShell session...'
|
||||
\$sessionOption = New-PSSessionOption -SkipCACheck -SkipCNCheck
|
||||
\$session = New-PSSession -ComputerName '$HOST' -Port 5985 -Credential \$cred -UseSSL:\$false -SessionOption \$sessionOption -ErrorAction Stop
|
||||
|
||||
Write-Host '✅ PowerShell remoting session created successfully'
|
||||
|
||||
# Test running a simple command
|
||||
\$result = Invoke-Command -Session \$session -ScriptBlock {
|
||||
@{
|
||||
ComputerName = \$env:COMPUTERNAME
|
||||
UserName = \$env:USERNAME
|
||||
PSVersion = \$PSVersionTable.PSVersion.ToString()
|
||||
CurrentTime = Get-Date -Format 'yyyy-MM-dd HH:mm:ss'
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host 'Remote session info:'
|
||||
Write-Host ' Computer:' \$result.ComputerName
|
||||
Write-Host ' User:' \$result.UserName
|
||||
Write-Host ' PowerShell:' \$result.PSVersion
|
||||
Write-Host ' Time:' \$result.CurrentTime
|
||||
|
||||
Remove-PSSession \$session
|
||||
Write-Host '✅ Session closed successfully'
|
||||
|
||||
} catch {
|
||||
Write-Host '❌ PowerShell remoting failed:' \$_.Exception.Message
|
||||
Write-Host ''
|
||||
Write-Host 'Common causes:'
|
||||
Write-Host ' - AllowUnencrypted=false (current setting on target)'
|
||||
Write-Host ' - Firewall blocking connections'
|
||||
Write-Host ' - Network connectivity issues'
|
||||
Write-Host ' - Authentication problems'
|
||||
exit 1
|
||||
}
|
||||
"
|
||||
|
||||
echo ""
|
||||
echo "🎉 All WinRM connectivity tests passed!"
|
||||
echo ""
|
||||
echo "WinRM is ready for use. You can now:"
|
||||
echo " 1. Create WinRM-based versions of existing scripts"
|
||||
echo " 2. Use PowerShell remoting for direct command execution"
|
||||
echo " 3. Compare performance with SSH-based approach"
|
||||
27
scripts/ssh/verify-ai-removed.sh
Executable file
27
scripts/ssh/verify-ai-removed.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/verify-ai-removed.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/verify-ai-removed-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] Uploading verify-ai-removed.ps1 to $USER_NAME@$HOST"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/verify-ai-removed.ps1" >/dev/null
|
||||
|
||||
echo "[*] Running verify on $HOST, log -> $LOG"
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/verify-ai-removed.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "[*] Done. Saved: $LOG"
|
||||
27
scripts/ssh/verify-debloat.sh
Executable file
27
scripts/ssh/verify-debloat.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/verify-debloat.ps1"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/verify-debloat-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10)
|
||||
|
||||
echo "[*] Uploading verify-debloat.ps1 to $USER_NAME@$HOST"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/verify-debloat.ps1" >/dev/null
|
||||
|
||||
echo "[*] Running verify on $HOST, log -> $LOG"
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/verify-debloat.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "[*] Done. Saved: $LOG"
|
||||
34
scripts/ssh/win11debloat.sh
Executable file
34
scripts/ssh/win11debloat.sh
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${HOST:-192.168.88.108}"
|
||||
USER_NAME="${USER_NAME:-Admin}"
|
||||
PASS="${PASS:-P@ssw0rd!}"
|
||||
|
||||
HERE="$(cd "$(dirname "$0")" && pwd)"
|
||||
SCRIPT="$HERE/../powershell/win11debloat.ps1"
|
||||
CONFIG="$HERE/win11debloat-config.json"
|
||||
LOG_DIR="$HERE/../../logs"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
LOG="$LOG_DIR/win11debloat-${HOST}-${STAMP}.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10 -o ServerAliveInterval=30)
|
||||
|
||||
if [[ ! -f "$CONFIG" ]]; then
|
||||
echo "[!] $CONFIG missing" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[*] Uploading win11debloat.ps1 and win11debloat-config.json"
|
||||
sshpass -p "$PASS" scp "${SSH_OPTS[@]}" "$SCRIPT" "$CONFIG" \
|
||||
"$USER_NAME@$HOST:C:/Users/$USER_NAME/" >/dev/null
|
||||
|
||||
echo "[*] Running on $HOST — this may take several minutes"
|
||||
echo "[*] Log -> $LOG"
|
||||
sshpass -p "$PASS" ssh "${SSH_OPTS[@]}" "$USER_NAME@$HOST" \
|
||||
"powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:/Users/$USER_NAME/win11debloat.ps1" \
|
||||
2>&1 | tee "$LOG"
|
||||
|
||||
echo "[*] Done. Saved: $LOG"
|
||||
Reference in New Issue
Block a user