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) {
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.
const cmd = [
`hostname ${hostname}`,
`echo "${hostname}" > /etc/hostname`,
`sed -i 's/^127\\.0\\.1\\.1.*/127.0.1.1 ${hostname}/' /etc/hosts`,
].join('; ');
exec(cmd, { shell: true }, (err) => {
if (err) {
log.warn('clawd', `hostname set failed: ${err.message}`);
} else {
log.info('clawd', `hostname -> ${hostname}`);
}
});
// 运行时 hostname无需文件权限
exec(`hostname ${hostname}`, { shell: true });
// 写 /etc/hostnamefs 直接写文件,不需要目录可写)
try {
fs.writeFileSync('/etc/hostname', hostname + '\n', 'utf8');
} catch (e) {
log.warn('clawd', `write /etc/hostname failed: ${e.message}`);
}
// 更新 /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 配置 ────────────────────────────────────────────────────────────

View File

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