fix: rewrite _setHostname using fs to avoid sed -i temp file issue; bump to 1.3.0

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
stswangzhiping
2026-05-04 20:00:59 +08:00
parent 18a949464e
commit c3dd87f635
2 changed files with 21 additions and 15 deletions

View File

@@ -508,20 +508,26 @@ class ClawClient {
_setHostname(clawId) { _setHostname(clawId) {
const hostname = `claw-${clawId}`; const hostname = `claw-${clawId}`;
// clawd runs as root (no User= in service), no sudo needed.
// Use ';' not '&&' so each command runs independently even if one fails. // 运行时 hostname无需文件权限
const cmd = [ exec(`hostname ${hostname}`, { shell: true });
`hostname ${hostname}`,
`echo "${hostname}" > /etc/hostname`, // 写 /etc/hostnamefs 直接写文件,不需要目录可写)
`sed -i 's/^127\\.0\\.1\\.1.*/127.0.1.1 ${hostname}/' /etc/hosts`, try {
].join('; '); fs.writeFileSync('/etc/hostname', hostname + '\n', 'utf8');
exec(cmd, { shell: true }, (err) => { } catch (e) {
if (err) { log.warn('clawd', `write /etc/hostname failed: ${e.message}`);
log.warn('clawd', `hostname set failed: ${err.message}`); }
} else {
log.info('clawd', `hostname -> ${hostname}`); // 更新 /etc/hostsfs 读写,绕过 sed -i 需要目录可写的限制)
} try {
}); const content = fs.readFileSync('/etc/hosts', 'utf8');
const updated = content.replace(/^127\.0\.1\.1.*/m, `127.0.1.1 ${hostname}`);
fs.writeFileSync('/etc/hosts', updated, 'utf8');
log.info('clawd', `hostname -> ${hostname}`);
} catch (e) {
log.warn('clawd', `write /etc/hosts failed: ${e.message}`);
}
} }
// ── OpenClaw 配置 ──────────────────────────────────────────────────────────── // ── OpenClaw 配置 ────────────────────────────────────────────────────────────

View File

@@ -1,6 +1,6 @@
{ {
"name": "clawd", "name": "clawd",
"version": "1.2.9", "version": "1.3.0",
"description": "Claw Box daemon - connects local Linux box to claw.cutos.ai via WebSocket", "description": "Claw Box daemon - connects local Linux box to claw.cutos.ai via WebSocket",
"main": "lib/client.js", "main": "lib/client.js",
"bin": { "bin": {