mcpField
S
startup-it-troubleshooting

startup-it-troubleshooting

github.com/bagelhole其他1.2k331 次安装23 周前更新
代码仓库

关于 startup-it-troubleshooting

面向由工程师兼任 IT 的初创公司和小团队,提供故障排查技能。内容涵盖身份验证、网络、设备、员工入离职及安全事件的命令和操作手册。

主要功能

  1. 01身份验证与 MFA 恢复命令
  2. 02Wi-Fi、DNS 和 VPN 诊断
  3. 03笔记本电脑与操作系统维护
  4. 04员工入职和离职步骤
  5. 05邮件、会议及外设问题处理
  6. 06安全事件响应流程

适用场景

  1. 01解锁员工账户并恢复 MFA
  2. 02排查 Wi-Fi 或 VPN 连接中断
  3. 03为新员工准备账户和设备
  4. 04撤销访问权限并处理设备丢失

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/bagelhole/devops-security-agent-skills --skill startup-it-troubleshooting

安装后在 Claude Code 中输入/startup-it-troubleshooting确认已加载。

详细介绍

创业公司 IT 故障排查

为工程师兼任 IT 部门的创业公司和小团队准备的运行手册。

适用场景

你是“临时接手 IT 的人”。没人拥有 IT 头衔,但笔记本电脑会卡死,投资者演示期间 Wi-Fi 会断线,有人会在午夜被锁定在 Google Workspace 之外,而新员工周一入职时却没有任何账号。本技能提供可直接复制粘贴的命令,帮你处理所有这些问题。

优先级排序:(1)全公司范围的中断,(2)影响高管或客户的阻碍,(3)影响整个团队的性能下降,(4)个人工作站问题。务必询问:“有多少人受到影响?”和“收入是否受到影响?”


SSO / 身份锁定

通过 GAM 管理 Google Workspace
bash <(curl -s -S -L https://gam-shortn.appspot.com/gam-install)  # install GAM
gam oauth create                                                     # authorize

gam update user [email protected] password "TempPass123!" changepassword on  # reset password
gam update user [email protected] suspended off       # unsuspend locked-out user
gam user [email protected] signout                    # force sign-out all sessions
gam user [email protected] update backupcodes         # new MFA backup codes
gam user [email protected] turnoff2sv                 # disable 2SV (re-enable within 24h)
Okta API
OKTA="company.okta.com"; T="your-api-token"; UID="00u1abcdef"
curl -X POST -H "Authorization: SSWS $T" "https://$OKTA/api/v1/users/$UID/lifecycle/unlock"
curl -X POST -H "Authorization: SSWS $T" "https://$OKTA/api/v1/users/$UID/lifecycle/reset_password?sendEmail=true"
curl -X POST -H "Authorization: SSWS $T" "https://$OKTA/api/v1/users/$UID/lifecycle/reset_factors"
curl -X DELETE -H "Authorization: SSWS $T" "https://$OKTA/api/v1/users/$UID/sessions"

**MFA 恢复流程:**通过视频通话核实身份,生成备用码或重置验证因素,让用户立即重新注册,确认旧设备已注销,并记录事件。


网络故障排查

Wi-Fi 故障排查
# macOS
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
networksetup -setairportpower en0 off && sleep 2 && networksetup -setairportpower en0 on
sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder

# Linux
nmcli device wifi list && nmcli connection show --active
nmcli device disconnect wlan0 && nmcli device connect wlan0
sudo systemd-resolve --flush-caches
netsh wlan show interfaces
netsh wlan disconnect; netsh wlan connect name="OfficeWiFi"
ipconfig /flushdns
netsh winsock reset  # full stack reset, reboot after
DNS 问题
nslookup company.com 8.8.8.8            # test against known-good DNS
dig @1.1.1.1 company.com                # Linux/macOS detail
sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4  # macOS temp override
$a = Get-NetAdapter | Where-Object {$_.Status -eq "Up"}
Set-DnsClientServerAddress -InterfaceIndex $a.ifIndex -ServerAddresses ("8.8.8.8","8.8.4.4")
VPN 无法连接
nc -zv vpn.company.com 443                         # test port reachability
sudo wg show                                        # WireGuard status
sudo wg-quick down wg0 && sudo wg-quick up wg0     # restart WireGuard
tailscale status && sudo tailscale up --reset       # Tailscale re-auth
网速缓慢
speedtest-cli --simple        # bandwidth test (pip install speedtest-cli)
ping -c 50 8.8.8.8            # packet loss check
networkQuality -s              # macOS 12+ bufferbloat test

笔记本电脑性能

磁盘空间
df -h                                    # volume overview
du -sh ~/* | sort -rh | head -15         # biggest dirs in home
docker system df                         # Docker disk usage (common culprit)
docker system prune -a --volumes         # reclaim Docker space
brew cleanup --prune=all                 # macOS Homebrew cleanup
Get-PSDrive -PSProvider FileSystem | Select Name,@{N='Free(GB)';E={[math]::Round($_.Free/1GB,2)}}
Get-ChildItem C:\ -Recurse -File -EA SilentlyContinue | Sort Length -Desc | Select -First 15 FullName,@{N='MB';E={[math]::Round($_.Length/1MB,2)}}
内存压力和失控进程
# macOS
memory_pressure
top -o rsize -l 1 -n 10 -stats pid,command,rsize
pkill -f "Google Chrome Helper"

# Linux
free -h && ps aux --sort=-%mem | head -11
sudo dmesg | grep -i "oom\|out of memory"
Get-Process | Sort WorkingSet64 -Desc | Select -First 10 Name,@{N='MB';E={[math]::Round($_.WorkingSet64/1MB,2)}}
Stop-Process -Name "Teams" -Force
电池健康状况
system_profiler SPPowerDataType | grep -E "Cycle Count|Condition"  # macOS
upower -i /org/freedesktop/UPower/devices/battery_BAT0             # Linux
powercfg /batteryreport /output "$env:USERPROFILE\Desktop\battery.html"

macOS 管理

profiles status -type enrollment          # MDM enrollment check
sudo systemsetup -setremotelogin on       # enable SSH for remote admin

# Homebrew fleet setup — standard Brewfile
cat > Brewfile <<'EOF'
brew "git"; brew "node"; brew "[email protected]"; brew "awscli"; brew "jq"; brew "gh"
cask "google-chrome"; cask "slack"; cask "1password"; cask "visual-studio-code"; cask "docker"; cask "zoom"
EOF
brew bundle install --file=Brewfile
brew bundle dump --file=~/Brewfile --force  # export current setup

# FileVault
sudo fdesetup status && sudo fdesetup enable  # store recovery key in 1Password

# Updates
softwareupdate -l && sudo softwareupdate -ia --restart

Windows 管理

gpresult /r; gpupdate /force             # check and refresh Group Policy

# Windows Update
Install-Module PSWindowsUpdate -Force -Scope CurrentUser
Install-WindowsUpdate -AcceptAll -AutoReboot
# If stuck: reset update components
Stop-Service wuauserv,cryptSvc,bits,msiserver -Force
Remove-Item "C:\Windows\SoftwareDistribution" -Recurse -Force
Start-Service wuauserv,cryptSvc,bits,msiserver

# BitLocker
manage-bde -status C:
Enable-BitLocker -MountPoint "C:" -EncryptionMethod XtsAes256 -UsedSpaceOnly -TpmProtector

# Remote Desktop
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"

Linux 桌面

# Ubuntu — fix broken packages
sudo apt --fix-broken install && sudo dpkg --configure -a && sudo apt update && sudo apt upgrade -y

# Fedora — fix broken packages
sudo dnf check && sudo dnf distro-sync && sudo dnf update -y

# Service failures
systemctl --failed
journalctl -p err -b

# Drivers
sudo ubuntu-drivers autoinstall                    # Ubuntu proprietary drivers
lspci | grep -i vga && sudo lshw -C display        # GPU info
sudo dmesg | grep -i firmware                       # missing firmware

# Display issues
xrandr --auto                                       # reset to auto-detect
xrandr --output HDMI-1 --mode 1920x1080 --rate 60  # force resolution
echo $XDG_SESSION_TYPE                              # Wayland vs X11 check

电子邮件 / 日历问题

Google Workspace
gam user [email protected] show forwarding    # check rogue forwarding rules
gam user [email protected] delete forwarding  # remove forwarding
gam user [email protected] show delegates     # check email delegation
gam user [email protected] show filters       # check mail filters
Microsoft 365
Install-Module ExchangeOnlineManagement -Force -Scope CurrentUser
Connect-ExchangeOnline -UserPrincipalName [email protected]
Get-MessageTrace -SenderAddress [email protected] -StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date)
Get-MailboxStatistics -Identity [email protected] | Select DisplayName,TotalItemSize
电子邮件送达问题
dig TXT company.com | grep "v=spf1"             # SPF
dig TXT google._domainkey.company.com            # DKIM
dig TXT _dmarc.company.com                       # DMARC

入职清单

# 1. Google Workspace account
gam create user [email protected] firstname "Jane" lastname "Smith" \
  password "Welcome2Company!" changepassword on org "/Engineering"
gam update group [email protected] add member [email protected]

# 2. 1Password
op user provision --email [email protected] --name "Jane Smith"

# 3. Slack
curl -X POST "https://slack.com/api/admin.users.invite" \
  -H "Authorization: Bearer xoxp-your-admin-token" \
  -d "[email protected]&channel_ids=C01GENERAL,C02ENGINEERING&team_id=T01YOURTEAM"

# 4. GitHub
gh api orgs/your-company/invitations -f email="[email protected]" -f role="direct_member"
gh api orgs/your-company/teams/engineering/memberships/newhire-username -f role="member" -X PUT

# 5. VPN / Tailscale
tailscale up --authkey tskey-auth-abc123
首日设置脚本(macOS)

将此脚本提供给新员工。它会安装 Homebrew,从托管的 Brewfile 安装标准工具,配置 Git,验证 GitHub CLI 身份,克隆核心代码仓库,并启用 FileVault。

#!/bin/bash
set -e
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
curl -sL https://internal.company.com/setup/Brewfile -o /tmp/Brewfile && brew bundle install --file=/tmp/Brewfile
read -p "Full name: " N; read -p "Email: " E
git config --global user.name "$N" && git config --global user.email "$E" && git config --global pull.rebase true
gh auth login && mkdir -p ~/src && cd ~/src && gh repo clone your-company/main-app
sudo fdesetup enable

离职清单

有人离职时,立即执行以下操作。安全问题上,速度至关重要。

gam update user [email protected] suspended on             # 1. block all access
gam user [email protected] signout                         # 2. kill sessions
gam user [email protected] transfer drive [email protected]  # 3. transfer Drive
gam user [email protected] add delegate [email protected]    # 4. delegate email 30d
curl -X POST "https://slack.com/api/admin.users.remove" \
  -H "Authorization: Bearer xoxp-your-admin-token" \
  -d "user_id=U01DEPARTED&team_id=T01YOURTEAM"               # 5. remove Slack
gh api orgs/your-company/members/departed-username -X DELETE   # 6. remove GitHub
op user suspend [email protected]                           # 7. revoke 1Password
aws iam delete-login-profile --user-name departed              # 8. revoke AWS console
aws iam list-access-keys --user-name departed                  #    then delete each key
echo "$(date -u +%Y-%m-%dT%H:%M:%SZ) Offboarded [email protected]" >> ~/offboarding-log.txt

视频会议

# macOS
lsof | grep "AppleCamera\|VDC"          # check what owns the camera
pkill -f zoom.us && open -a zoom.us      # restart Zoom
tccutil reset Camera                     # reset camera permissions

# Linux
pactl list short sources                 # list mics
pactl set-source-mute @DEFAULT_SOURCE@ 0 # unmute mic
Get-CimInstance Win32_SoundDevice | Select Name, Status

**快速修复:**没有音频=检查操作系统是否静音,并确认设备选择正确。没有视频=关闭其他会议应用。出现回声=使用耳机。画面卡顿=上传速度需达到 3 Mbps 以上。


打印机 / 外设问题

# macOS
lpstat -p -d && cancel -a                                    # list printers, clear queue
sudo launchctl stop org.cups.cupsd && sudo launchctl start org.cups.cupsd
system_profiler SPUSBDataType            # USB devices

# Linux
sudo systemctl restart cups              # restart print system
lsusb && dmesg | tail -20               # USB diagnostics
Restart-Service Spooler -Force                              # restart print spooler
Get-PrintJob -PrinterName "OfficePrinter" | Remove-PrintJob # clear stuck jobs

安全基础知识

终端保护
# macOS
spctl --status                           # Gatekeeper
csrutil status                           # SIP
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on

# Linux
sudo ufw enable && sudo ufw default deny incoming && sudo ufw default allow outgoing
Get-MpComputerStatus | Select AntivirusEnabled, RealTimeProtectionEnabled
Start-MpScan -ScanType QuickScan
Get-NetFirewallProfile | Select Name, Enabled
网络钓鱼事件响应
gam update user [email protected] password "$(openssl rand -base64 16)" changepassword on
gam user [email protected] signout             # kill sessions
gam user [email protected] turnoff2sv          # reset MFA
gam user [email protected] show tokens         # check rogue OAuth apps
gam user [email protected] show forwarding     # check attacker persistence
设备丢失 / 被盗处理流程
  1. 立即——通过 MDM 或 Find My Mac 远程抹除设备。
  2. 15 分钟内——重置密码并终止会话(参见上面的 SSO 命令)。
  3. 1 小时内——轮换 API 密钥和机密:gh auth refresh,删除 AWS 访问密钥。
  4. 24 小时内——检查访问日志,查找可疑活动。

相关技能

评论

支持 Markdown