ワンクリックで
dell-fw-download
Dell ファームウェアダウンロード。Playwright で dl.dell.com から BIN を取得し firmimg.d7 を抽出する。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Dell ファームウェアダウンロード。Playwright で dl.dell.com から BIN を取得し firmimg.d7 を抽出する。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
別の tmux ペインで動いている Claude Code インスタンスを、このセッションから tmux send-keys / capture-pane で駆動するオーケストレーション。プランモード投入 → プラン再点検 (1 回目の検証) → ユーザ承認ゲート → auto mode 実装 → レポート未記載追記 → レポート矛盾再チェック (2 回目の検証) の定型フロー。長時間タスクをもう 1 体の claude に「ダブルチェック付きで」実行させ、要所だけ自分が監督したいときに使う。
PXE/netboot 経由で Debian + HW RAID10 を自動インストール (OpenWrt ローカル TFTP + embed ipxe.efi + IPv4 リテラル mirror)。BMC USB redirector が累積劣化した機種 (TX1320 M3 等) や、 cross-site 拠点の install に使う。phase 19 で training-tx1320 で完遂、 物理操作なしで自力 SSH まで到達。
Fujitsu iRMC S4 (TX1320 M3 等) の電源・BIOS・RAID 操作 + BIOS 設定リファレンス。Redfish (HTTPS + SECLEVEL=0) 経由の電源/ブート操作 + iRMC Web UI/KVM 経由の手動 BIOS/RAID 操作手順 + 全 BIOS 設定項目の網羅リファレンス (bios/)。training-tx1320 対応。
Debian + Proxmox VE OS自動セットアップ。BMC VirtualMedia経由でpreseedインストール、PVEインストールまでを実行する。
Supermicro X11DPU/X10DRT-P BIOS Setup 操作。KVM スクリーンショット + キーストロークで BIOS メニューを操作する。BIOS 設定変更、確認、保存を行う。4-6号機 + 10号機対応。
iDRAC7 基本操作。SSH 経由で racadm コマンドを実行し、サーバ管理を行う。
| name | dell-fw-download |
| description | Dell ファームウェアダウンロード。Playwright で dl.dell.com から BIN を取得し firmimg.d7 を抽出する。 |
| argument-hint | <driver-id> <save-dir> |
Playwright で Dell サポートサイトから FW BIN ファイルをダウンロードし、iDRAC 用の firmimg.d7 を抽出する。
| 項目 | 値 |
|---|---|
| ダウンロード元 | dl.dell.com (Akamai CDN) |
| ツール | Playwright (headless Chromium) |
| 出力形式 | firmimg.d7 (iDRAC FW イメージ) |
| 前提スキル | playwright |
.venv/bin/python が利用可能であることhttps://www.dell.com/support/home/en-us/drivers/driversdetails?driverid=<DRIVER-ID>
| バージョン | Driver ID | ファイル名 |
|---|---|---|
| 1.66.65 | 992WY | iDRAC-with-Lifecycle-Controller_Firmware_VV01T_LN_1.66.65_A00.BIN |
| 2.20.20.20 | 4P5PF | iDRAC-with-Lifecycle-Controller_Firmware_XTPX4_LN_2.20.20.20_A00.BIN |
| 2.65.65.65 | Y9YPN | iDRAC-with-Lifecycle-Controller_Firmware_0JKKT_LN_2.65.65.65_A00.BIN |
tmp/<session-id>/dell-download.py として保存:
import os, sys, time
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..', '.venv', 'lib'))
from playwright.sync_api import sync_playwright
DRIVER_ID = sys.argv[1] # e.g. "Y9YPN"
SAVE_DIR = sys.argv[2] # e.g. "tmp/<session-id>"
DRIVER_URL = f"https://www.dell.com/support/home/en-us/drivers/driversdetails?driverid={DRIVER_ID}"
with sync_playwright() as p:
browser = p.chromium.launch(
headless=True,
args=["--no-sandbox", "--disable-gpu"],
)
context = browser.new_context(
accept_downloads=True,
locale="en-US",
extra_http_headers={"Accept-Language": "en-US,en;q=0.9"},
user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
)
page = context.new_page()
page.add_init_script(
"Object.defineProperty(navigator, 'webdriver', {get: () => undefined});"
)
# Dell ドライバページを訪問してセッション確立
# 注意: GEO IP により日本語ページにリダイレクトされることがある
# en-us URL を強制し、cookie 同意バナーがあれば閉じる
print(f"Visiting driver page: {DRIVER_URL}", file=sys.stderr)
page.goto(DRIVER_URL, wait_until="domcontentloaded", timeout=60000)
time.sleep(3)
# Cookie 同意バナーを閉じる (表示されている場合)
try:
reject_btn = page.locator('button:has-text("Reject"), button:has-text("すべて拒否")')
if reject_btn.count() > 0:
reject_btn.first.click()
time.sleep(1)
except Exception:
pass
# GEO リダイレクトで日本語ページになった場合、en-us URL に再アクセス
if "/en-us/" not in page.url:
print(f"Redirected to {page.url}, forcing en-us URL", file=sys.stderr)
page.goto(DRIVER_URL, wait_until="domcontentloaded", timeout=60000)
time.sleep(3)
# ダウンロードボタンをクリック
dl_btn = page.locator('a:has-text("Download")')
if dl_btn.count() > 0:
with page.expect_download(timeout=300000) as download_info:
dl_btn.first.click()
download = download_info.value
save_path = os.path.join(SAVE_DIR, download.suggested_filename)
download.save_as(save_path)
print(f"Downloaded: {save_path}")
else:
# 直接 DL URL パターン
dl_url = f"https://dl.dell.com/FOLDER00000000/{DRIVER_ID}.BIN"
with page.expect_download(timeout=300000) as download_info:
page.goto(dl_url)
download = download_info.value
save_path = os.path.join(SAVE_DIR, download.suggested_filename)
download.save_as(save_path)
print(f"Downloaded: {save_path}")
browser.close()
実行:
.venv/bin/python tmp/<session-id>/dell-download.py <DRIVER-ID> tmp/<session-id>
注意: Dell CDN は curl 直接ダウンロードを Akamai ボット検知でブロック (403 Access Denied) する。必ず Playwright 経由でダウンロードすること。
Dell の Linux BIN ファイルは自己展開型シェルスクリプト。内部に #####Startofarchive##### マーカーがあり、その後に gzip tar アーカイブが続く。
tmp/<session-id>/extract-bin.py として保存:
import gzip
import io
import os
import sys
import tarfile
bin_path = sys.argv[1] # e.g. "tmp/<session-id>/firmware.BIN"
output_dir = sys.argv[2] # e.g. "tmp/<session-id>/fw-extracted"
MARKER = b"#####Startofarchive#####"
with open(bin_path, "rb") as f:
data = f.read()
idx = data.find(MARKER)
if idx == -1:
print("ERROR: Archive marker not found", file=sys.stderr)
sys.exit(1)
# マーカー行の次の改行以降がアーカイブ
archive_start = data.index(b"\n", idx) + 1
archive_data = data[archive_start:]
print(f"Archive found at offset {archive_start} ({len(archive_data)} bytes)")
os.makedirs(output_dir, exist_ok=True)
gz = gzip.GzipFile(fileobj=io.BytesIO(archive_data))
tar = tarfile.open(fileobj=gz, mode="r:")
tar.extractall(path=output_dir)
tar.close()
# firmimg.d7 の場所を表示
for root, dirs, files in os.walk(output_dir):
for name in files:
if name == "firmimg.d7":
fpath = os.path.join(root, name)
fsize = os.path.getsize(fpath)
print(f"Found: {fpath} ({fsize} bytes)")
実行:
python3 tmp/<session-id>/extract-bin.py tmp/<session-id>/firmware.BIN tmp/<session-id>/fw-extracted
fw-extracted/
payload/
firmimg.d7 ← iDRAC FW アップデートで使用するファイル
package.xml
...
.venv/bin/python tmp/<session-id>/dell-download.py <DRIVER-ID> tmp/<session-id>python3 tmp/<session-id>/extract-bin.py tmp/<session-id>/<BIN-file> tmp/<session-id>/fw-extractedchmod 644 tmp/<session-id>/fw-extracted/payload/firmimg.d7/ja-jp/) にリダイレクトされ「ドライバーはご利用いただけません」と表示されることがある。locale="en-US" + Accept-Language ヘッダ + cookie 同意バナー閉じ + en-us URL 強制で対処する#####Startofarchive##### はファイルによって位置が異なる。バイナリ検索で動的に検出するchmod 644 を忘れないこと (tftp-server スキル参照)