diff --git a/server/app/socket/onekey.js b/server/app/socket/onekey.js
index eee3c7e..f7df7a7 100644
--- a/server/app/socket/onekey.js
+++ b/server/app/socket/onekey.js
@@ -49,7 +49,7 @@ function execShell(socket, sshClient, curRes, resolve) {
}
stream
.on('close', async () => {
- // ssh连接关闭后,再执行一次输出,防止最后一次节流函数发生在延迟时间内导致终端的输出数据丢失
+ // shell关闭后,再执行一次输出,防止最后一次节流函数发生在延迟时间内导致终端的输出数据丢失
await throttledDataHandler.last() // 等待最后一次节流函数执行完成,再执行一次数据输出
// console.log('onekey终端执行完成, 关闭连接: ', curRes.host)
if (curRes.status === execStatusEnum.executing) {
diff --git a/server/app/socket/terminal.js b/server/app/socket/terminal.js
index 86fef1d..9ec9449 100644
--- a/server/app/socket/terminal.js
+++ b/server/app/socket/terminal.js
@@ -29,6 +29,29 @@ function createTerminal(socket, sshClient) {
})
}
+function execShell(sshClient, command = '', callback) {
+ if (!command) return
+ let result = ''
+ sshClient.exec(`source ~/.bashrc && ${ command }`, (err, stream) => {
+ if (err) return callback(err.toString())
+ stream
+ .on('data', (data) => {
+ result += data.toString()
+ })
+ .stderr
+ .on('data', (data) => {
+ result += data.toString()
+ })
+ .on('close', () => {
+ consola.info('一次性指令执行完成:', command)
+ callback(result)
+ })
+ .on('error', (error) => {
+ console.log('Error:', error.toString())
+ })
+ })
+}
+
module.exports = (httpServer) => {
const serverIo = new Server(httpServer, {
path: '/terminal',
@@ -74,6 +97,11 @@ module.exports = (httpServer) => {
consola.success('连接终端成功:', host)
socket.emit('connect_success', `已连接到终端:${ host }`)
createTerminal(socket, sshClient)
+ // execShell(sshClient, 'history', (data) => {
+ // data = data.split('\n').filter(item => item)
+ // console.log(data)
+ // socket.emit('terminal_command_history', data)
+ // })
})
.on('error', (err) => {
console.log(err)
diff --git a/web/src/views/terminal/components/command_history.vue b/web/src/views/terminal/components/command_history.vue
new file mode 100644
index 0000000..bb5e307
--- /dev/null
+++ b/web/src/views/terminal/components/command_history.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/views/terminal/components/terminal-setting.vue b/web/src/views/terminal/components/terminal-setting.vue
index 5834610..bf5dc73 100644
--- a/web/src/views/terminal/components/terminal-setting.vue
+++ b/web/src/views/terminal/components/terminal-setting.vue
@@ -14,11 +14,7 @@
:show-message="false"
>
-
+
+
+
+