###前提・実現したいこと
以下のコードでサーバーのGPUの状態をsshコマンドを用いて
得ようとしているのですが、arrayの中身がundefiedであるというエラーがでてうまくいきません。
問題点は、まだarrayの中に情報が入っていないのにもかかわらず、
sliceをしてしまっていることです。
解決法として、arrayの中にきちんと要素が入ってから
slice処理を行うということをしたいのですが、
どのようにすれば良いのかわかりません。
よろしくお願いします。
###発生している問題・エラーメッセージ
Uncaught TypeError: Cannot read property 'slice' of undefined
###該当のソースコード
function query_gpu(gpu_name, array){ var SSH = require('simple-ssh'); var ssh = new SSH({ host: gpu_name, user: 'name', pass: 'pass' }); ssh.exec('nvidia-smi --query-gpu=utilization.gpu --format=csv', { out: function(stdout) { array.push(stdout) console.log(stdout) } }).start() } var a = []; query_gpu('tai', a); array[1] = Number(array[1].slice(0,2)); array[2] = Number(array[2].slice(0,2));
###試したこと
// Mixing jQuery and Node.js code in the same file? Yes please!
$(function(){
function query_gpu(gpu_name, array, callback) {
var SSH = require('simple-ssh');
var ssh = new SSH({
host: gpu_name,
user: 'name',
pass: 'pass'
});
ssh.exec('nvidia-smi --query-gpu=utilization.gpu --format=csv', {
out: function(stdout) {
array.push(stdout)
debugger;
console.log(stdout)
callback();
}
}).start()
}
var a = [];
query_gpu('tai', a, function() {
// ここに取得したデータについての処理を全て書く
a[1] = Number(a[1].slice(0, 2));
a[2] = Number(a[2].slice(0, 2));
});
});
を走らせてみて途中のstdoutの結果を見ました。
'''
utilization.gpu [%]
0 %
99 %
'''
と複数行で3つの値が来ることを期待していたのですが、実際は初めのutilization.gpu [%]だけでした。
###補足情報(言語/FW/ツール等のバージョンなど)
nodeのsimple-ssh
回答3件
あなたの回答
tips
プレビュー