블로그 이미지
생각처럼

카테고리

전체보기 (209)
TOOL (1)
다이어리 (1)
Bit (200)
HELP? (0)
Total
Today
Yesterday

달력

« » 2025.8
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

공지사항

태그목록

최근에 올라온 글

오라클 접속

Bit/C# / 2012. 2. 3. 21:21

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.OracleClient;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            String strcon = "Data Source=SEUNGWON;User ID=scott;Password=tiger";
            String query = "INSERT INTO address VALUES(:id,:name,:addr)";
            OracleConnection conn = null;
            try
            {
                conn = new OracleConnection(strcon);
                conn.Open();
                OracleCommand comm = new OracleCommand(query, conn);
                //파라미터의 타입정의
                comm.Parameters.Add(":id", OracleType.Number);
                comm.Parameters.Add(":name", OracleType.VarChar);
                comm.Parameters.Add(":addr", OracleType.VarChar);
                //파라미터의 값을 지정
                comm.Parameters[":id"].Value = 2;
                comm.Parameters[":name"].Value = "승원";
                comm.Parameters[":addr"].Value = "대전시";
                //쿼리 실행
                int count = comm.ExecuteNonQuery();
                Console.WriteLine("{0}행이 적용되었습니다.", count);
            }
            catch (OracleException e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                conn.Close();
                SelectMethod();
            }
        }
            static void SelectMethod()
            {
                OracleConnection conn = null;
                String strcon = "Data Source = LES;User ID= scott;Password = tiger";
                String query = "SELECT * FROM address";
                try
                {
                    conn = new OracleConnection(strcon);
                    conn.Open();
                    OracleCommand comm = new OracleCommand(query, conn);
                    OracleDataReader re = comm.ExecuteReader();
                    //한생씩 읽어온다.
                    while (re.Read())
                    {
                        //한행의 컬럼수 만큼 읽는다.
                        Console.WriteLine(re[0].ToString() + "\t"
                            + re[1].ToString() + "\t"
                            + re[2].ToString() + "\n");
                    }
                }
                catch (OracleException e)
                {
                    Console.WriteLine(e.Message);
                }
                finally
                {
                    conn.Close();
                }
            }
        
    }
}

Posted by 생각처럼
, |

C:\oracle\ora92\network\admin //오라클이 설치된 폴더의 주소로 들어가서

확장자가 ORA 인파일에 써있는 컴퓨터 이름 대신 아이피 주소로 변경하면 접속 가능

Posted by 생각처럼
, |

// 오라클 bfile 을 이용하여 디렉토리 내의 파일 참조
using System;
using System.IO;
using System.Data;
using System.Data.OracleClient;

public class Sample
{
    public static void Main(string[] args)
    {

        OracleConnection connection = new OracleConnection(
       "Data Source=won;User ID=scott;Password=tiger");
        
        //OracleConnection connection = new OracleConnection(
         // "Data Source=won;User ID=scott;Password=tiger;Integrated Security=yes;");
        connection.Open();

        OracleCommand command = connection.CreateCommand();
        command.CommandText =
          "CREATE or REPLACE DIRECTORY MyDir as 'c:\\img'"; //오라클상에 가상에 디렉토리 생성시
        command.ExecuteNonQuery();                          //대문자와 소문자의 조합으로 디렉토리명을 써도
        command.CommandText =                               
          "DROP TABLE test_bfile";
        try
        {
            command.ExecuteNonQuery();
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        command.CommandText =
          "CREATE TABLE test_bfile(id number, memo BFILE)";
        command.ExecuteNonQuery();
        command.CommandText =
          "INSERT INTO test_bfile values (2, BFILENAME('MYDIR','b.jpg'))";//불러올때는 대문자로 불러와야한다
        command.ExecuteNonQuery();                                          //소문자로 불러와서 하루 고생....ㅡ.,ㅡ;
        command.CommandText = "SELECT * FROM test_bfile";
        byte[] buffer = new byte[100];
        OracleDataReader reader = command.ExecuteReader();
        using (reader)
        {
            if (reader.Read())
            {
                OracleBFile bFile = reader.GetOracleBFile(1);
                using (bFile)
                {
                    Console.WriteLine(bFile.FileExists.ToString());
                    bFile.Seek(0, SeekOrigin.Begin);
                    bFile.Read(buffer, 0, 100);
                }
            }
        }

        connection.Close();
    }

}

Posted by 생각처럼
, |

리눅스 버전은 가급적 최신으로 할것 우분투 에서는 path 가 적용되지 않는 이유를 전혀 모르겠음

페도라 최신버전으로 하니 정상적으로 make  됨

하지만 컴파일을 하고도 고용량의 메모리카드에서는 네트워크가 안먹는 문제 점발생

이유는 잘모르겠은 dslinux 사이트 게시판에 올라와 있는 파일로 실행을 해보니 무리없이 실행됨

메모리카드의 문제라고 하나 수정한 것이 있는걸로 봐서는 makefile 을 수정하면 되지 않을까하는생각

Posted by 생각처럼
, |

우분투는 개발자 를위한 툴이 설치가 안되있어서 이것저것 설치해야된다 뭐 make 같은 건 인터넷에서 쉽게

찾아서 설치할수 있지만 유독 이 오류 메세지는 어떻게 해야될지 몰랐다

그러던 중 zv620909 님이 알려주신 구글로 찾은 사이트

http://ubuntuforums.org/archive/index.php/t-396368.html

...역시...좋아...ㅎ

 

configure: WARNING: don't have both flex and bison; reverting to lex/yacc
checking for capable lex... insufficient
configure: error: Your operating system's lex is insufficient to compile
 libpcap.  flex is a lex replacement that has many advantages, including
 being able to compile libpcap.  For more information, see
 http://www.gnu.org/software/flex/flex.html .
make[2]: *** [build/build] 오류 1
make[2]: Leaving directory `/home/seungwon/dslinux/lib/libpcap'
make[1]: *** [all] 오류 2
make[1]: Leaving directory `/home/seungwon/dslinux/lib'
make: *** [subdirs] 오류 1

요런 오류의 경우

root 터미널 에서 aptitude install flex

설치해주면 된다 ....오오...

Posted by 생각처럼
, |

ds 내부 메모리 용량 때문...

리눅스가 실행되면서 여러 프로세스를 동시에 실행시키는데

wifi 접속 까지 하면서 메모리 공이모잘라 프로세스가 강제종료된다

하여 접속이 안됨

그래서 슬롯2의 메모리 확장팩을 꽃아주면 정상작동.....

아님 슈퍼카드를 사용하는것도 좋은방법일듯....

Posted by 생각처럼
, |

    Private Sub DataGridView1_CellMouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseClick
        Dim cell As DataGridViewCell
        Try
            If e.Button = Windows.Forms.MouseButtons.Right Then
                If e.ColumnIndex >= 0 And e.RowIndex >= 0 Then
                    cell = DataGridView1.Item(e.ColumnIndex, e.RowIndex)
                    DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
                    cell.Selected = True
                    ContextMenuStrip1.Show(Control.MousePosition.X, Control.MousePosition.Y)
                End If
            Else
                DataGridView1.SelectionMode = DataGridViewSelectionMode.CellSelect

            End If
        Catch ex As Exception

        End Try
    End Sub

Posted by 생각처럼
, |
 
Imports System
Imports System.Windows.Forms
Public Class CalendarColumn
    Inherits DataGridViewColumn
    Public Sub New()
        MyBase.New(New CalendarCell())
    End Sub
    Public Overrides Property CellTemplate() As DataGridViewCell
        Get
            Return MyBase.CellTemplate
        End Get
        Set(ByVal value As DataGridViewCell)
            ' Ensure that the cell used for the template is a CalendarCell.
            If (value IsNot Nothing) AndAlso _
                Not value.GetType().IsAssignableFrom(GetType(CalendarCell)) _
                Then
                Throw New InvalidCastException("Must be a CalendarCell")
            End If
            MyBase.CellTemplate = value
        End Set
    End Property
End Class
Public Class CalendarCell
    Inherits DataGridViewTextBoxCell
    Public Sub New()
        ' Use the short date format.
        Me.Style.Format = "d"
    End Sub
    Public Overrides Sub InitializeEditingControl(ByVal rowIndex As Integer, _
        ByVal initialFormattedValue As Object, _
        ByVal dataGridViewCellStyle As DataGridViewCellStyle)
        ' Set the value of the editing control to the current cell value.
        MyBase.InitializeEditingControl(rowIndex, initialFormattedValue, _
            dataGridViewCellStyle)
        Dim ctl As CalendarEditingControl = _
            CType(DataGridView.EditingControl, CalendarEditingControl)
        ctl.Value = CType(Me.Value, DateTime)
    End Sub
    Public Overrides ReadOnly Property EditType() As Type
        Get
            ' Return the type of the editing contol that CalendarCell uses.
            Return GetType(CalendarEditingControl)
        End Get
    End Property
    Public Overrides ReadOnly Property ValueType() As Type
        Get
            ' Return the type of the value that CalendarCell contains.
            Return GetType(DateTime)
        End Get
    End Property
    Public Overrides ReadOnly Property DefaultNewRowValue() As Object
        Get
            ' Use the current date and time as the default value.
            Return DateTime.Now
        End Get
    End Property
End Class
Class CalendarEditingControl
    Inherits DateTimePicker
    Implements IDataGridViewEditingControl
    Private dataGridViewControl As DataGridView
    Private valueIsChanged As Boolean = False
    Private rowIndexNum As Integer
    Public Sub New()
        Me.Format = DateTimePickerFormat.Short
    End Sub
    Public Property EditingControlFormattedValue() As Object _
        Implements IDataGridViewEditingControl.EditingControlFormattedValue
        Get
            Return Me.Value.ToShortDateString()
        End Get
        Set(ByVal value As Object)
            If TypeOf value Is String Then
                Me.Value = DateTime.Parse(CStr(value))
            End If
        End Set
    End Property
    Public Function GetEditingControlFormattedValue(ByVal context _
        As DataGridViewDataErrorContexts) As Object _
        Implements IDataGridViewEditingControl.GetEditingControlFormattedValue
        Return Me.Value.ToShortDateString()
    End Function
    Public Sub ApplyCellStyleToEditingControl(ByVal dataGridViewCellStyle As _
        DataGridViewCellStyle) _
        Implements IDataGridViewEditingControl.ApplyCellStyleToEditingControl
        Me.Font = dataGridViewCellStyle.Font
        Me.CalendarForeColor = dataGridViewCellStyle.ForeColor
        Me.CalendarMonthBackground = dataGridViewCellStyle.BackColor
    End Sub
    Public Property EditingControlRowIndex() As Integer _
        Implements IDataGridViewEditingControl.EditingControlRowIndex
        Get
            Return rowIndexNum
        End Get
        Set(ByVal value As Integer)
            rowIndexNum = value
        End Set
    End Property
    Public Function EditingControlWantsInputKey(ByVal key As Keys, _
        ByVal dataGridViewWantsInputKey As Boolean) As Boolean _
        Implements IDataGridViewEditingControl.EditingControlWantsInputKey
        ' Let the DateTimePicker handle the keys listed.
        Select Case key And Keys.KeyCode
            Case Keys.Left, Keys.Up, Keys.Down, Keys.Right, _
                Keys.Home, Keys.End, Keys.PageDown, Keys.PageUp
                Return True
            Case Else
                Return Not dataGridViewWantsInputKey
        End Select
    End Function
    Public Sub PrepareEditingControlForEdit(ByVal selectAll As Boolean) _
        Implements IDataGridViewEditingControl.PrepareEditingControlForEdit
        ' No preparation needs to be done.
    End Sub
    Public ReadOnly Property RepositionEditingControlOnValueChange() _
        As Boolean Implements _
        IDataGridViewEditingControl.RepositionEditingControlOnValueChange
        Get
            Return False
        End Get
    End Property
    Public Property EditingControlDataGridView() As DataGridView _
        Implements IDataGridViewEditingControl.EditingControlDataGridView
        Get
            Return dataGridViewControl
        End Get
        Set(ByVal value As DataGridView)
            dataGridViewControl = value
        End Set
    End Property
    Public Property EditingControlValueChanged() As Boolean _
        Implements IDataGridViewEditingControl.EditingControlValueChanged
        Get
            Return valueIsChanged
        End Get
        Set(ByVal value As Boolean)
            valueIsChanged = value
        End Set
    End Property
    Public ReadOnly Property EditingControlCursor() As Cursor _
        Implements IDataGridViewEditingControl.EditingPanelCursor
        Get
            Return MyBase.Cursor
        End Get
    End Property
    Protected Overrides Sub OnValueChanged(ByVal eventargs As EventArgs)
        ' Notify the DataGridView that the contents of the cell have changed.
        valueIsChanged = True
        Me.EditingControlDataGridView.NotifyCurrentCellDirty(True)
        MyBase.OnValueChanged(eventargs)
    End Sub
End Class
Public Class Form1
    Inherits Form
    Private dataGridView1 As New DataGridView()
    <STAThreadAttribute()> _
    Public Shared Sub Main()
        Application.Run(New Form1())
    End Sub
    Public Sub New()
        Me.dataGridView1.Dock = DockStyle.Fill
        Me.Controls.Add(Me.dataGridView1)
        Me.Text = "DataGridView calendar column demo"
    End Sub
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) _
        Handles Me.Load
        Dim col As New CalendarColumn()
        Me.dataGridView1.Columns.Add(col)
        Me.dataGridView1.RowCount = 5
        Dim row As DataGridViewRow
        For Each row In Me.dataGridView1.Rows
            row.Cells(0).Value = DateTime.Now
        Next row
    End Sub
End Class
 
그리드뷰에서 특정컬럼을 dateTimePicker 처럼 사용가능
Posted by 생각처럼
, |

VB.NET 과 C#.NET 의 차이점

Bit / 2012. 2. 3. 18:04
Posted by 생각처럼
, |

출처 - http://gridcenter.or.kr 
Globus 2.2 설치 작정자: 권오경 (okkwon@hpcnet.ne.kr)

최종 수정 날짜: May 27, 2004 이 문서는 Globus 툴킷을 리눅스 PC에 설치하는 방법을 설명한다. RedHat Linux 7.3(Linux 커널 버젼은 2.4.18-3)을 기준으로 설명하였으며, Linux 표준 쉘인 bash 쉘을 이용한다고 가정하였다. '#'는 root 프롬프트를 의미하고, '$'는 사용자 프롬프트를 의미한다. globus version: 2.2 example hostname: sdd125.hpcnet.ne.kr OS: RedHat 7.3 kernel version: 2.4.18-3 gcc version: 2.96 목차

  1. 다운로드 받기
  2. Globus를 위한 사용자 계정 만들기
  3. 설치전에 점검해야 할 사항
  4. Globus 설치
  5. 성공적인 설치 여부 확인
  6. gatekeeper를 서비스로 등록하기
  7. GRAM Reporter 추가하기
  8. Grid Ftp 서버를 서비스로 등록하기
  9. Grid ncftp client를 설치하자.
  10. MDS 설정 (GRIS 설정)
  11. Common Error

  1. 다운로드 받기 [[목차]] Globus Toolkit 2.2은 다음 주소에서 다운로드 받을 수 있다.http://www.globus.org/gt2.2/install/download.html Globus Toolkit 2.0 부터는 Grid Packaging Toolkit을 이용해 쉽게 설치할 수 있다. (Binary로도 설치가 가능하나, 여기서는 Source로 설치하는 방법을 설명한다. binary설치는 4번을 제외하고 같다. 설치법은 binary 버전 설치를 참조한다.)
  2. Globus를 위한 계정 만들기 [[목차]] globus라는 사용자를 추가한다.
    /usr/sbin/adduser globus
    globus의 초기 비밀번호를 설정
    passwd globus
    globus 설치 디렉토리를 만들고 globus가 사용할 수 있게 권한을 변경한다.
    mkdir /usr/local/globus # chown globus.globus /usr/local/globus
  3. 설치전에 점검해야 할 사항[[목차]]
    • perl이 설치되어 있는지 확인: 버전 5.005이상이 설치되어 있어야 한다.
    • /etc/hosts 에 호스트의 이름이 등록되어 있는지 확인한다.
      vi /etc/hosts 111.222.333.444 hostname.your_full_domain_name 111.222.333.445 sdd125.hpcnet.ne.kr
      globusrun을 실행할 때 이 파일을 참조하여 ip 주소를 host name으로 바꾸어 준다.
    • hostname 이 FQDN(Fully-Qualified Domain Name)으로 설정되어 있는지 확인한다. 다음 과정에서 globus-install이 실행되면서 hostname을 읽어 사용하기 때문이다.
      hostname sdd125.hpcnet.ne.kr
    • /etc/sysconfig/network 파일을 열어서 hostname이 FQDN(Fully-Qualified Domain Name)으로 설정되어 있는지 확인한다.
      more /etc/sysconfig/network NETWORKING=yes HOSTNAME=sdd125.hpcnet.ne.kr GATEWAY=111.222.333.1
  4. 설치 [[목차]]
    • globus 툴킷의 설치는 globus 계정으로 한다.
      su globus
    • 압축을 해제할 디렉토리로 이동 (globus의 홈디렉토리)
      cd /home/globus
    • 다음과 같은 환경변수를 설정한다.
      export GLOBUS_LOCATION=/usr/local/globus
      Globus Packaging Tool(GPT)을 설치한다. GPT 2.2.2버전을 받아서 설치하자. [HTTP download] [FTP download]
      export GPT_LOCATION=/usr/local/globus $ tar zxvf gpt-2.2.2-src.tar.gz $ cd gpt-2.2.2 $ ./build_gpt
      이제 GPT설치는 끝났다.
    • 다음 명령 형식을 이용하여 Globus Toolkit의 번들 파일들을 설치해보자.
      /usr/local/globus/sbin/gpt-build bundle options flavors
      위 명령에서 이탤릭체로 된 부분을 다음과 같이 대체해서 사용하면 된다.
      BUNDLE FLAVORS
      Data Management Client gcc32dbg
      Data Management SDK gcc32dbg
      Data Management Server gcc32dbg
      Information Services Client gcc32dbgpthr
      Information Services SDK gcc32dbgpthr
      Information Services Server gcc32dbgpthr
      Resource Management Client gcc32dbg
      Resource Management SDK gcc32dbg
      Resource Management Server gcc32dbg
      전체 설치에 관한 script Download 받기 [Globus Toolkit 2.2 Advisories Site Update 항목되어 있는 packages[2002-11-06]]
      wget http://gridtest.hpcnet.ne.kr/software/index.php?dir=./globus/KISTI/gt2.2/globus*.gz
      Data Management Client 번들 설치
      /usr/local/globus/sbin/gpt-build \ globus-data-management-client-2.2.2-src_bundle.tar.gz gcc32dbg
      Data Management SDK 번들 설치
      /usr/local/globus/sbin/gpt-build \ globus-data-management-sdk-2.2.2-src_bundle.tar.gz gcc32dbg
      Data Management Server 번들 설치
      /usr/local/globus/sbin/gpt-build \ globus-data-management-server-2.2.2-src_bundle.tar.gz gcc32dbg
      Information Services Client 번들 설치
      /usr/local/globus/sbin/gpt-build \ globus-information-services-client-2.2.2-src_bundle.tar.gz gcc32dbgpthr
      Information Services SDK 번들 설치
      /usr/local/globus/sbin/gpt-build \ globus-information-services-sdk-2.2.2-src_bundle.tar.gz gcc32dbgpthr
      Information Services Server 번들 설치
      /usr/local/globus/sbin/gpt-build \ globus-information-services-server-2.2.2-src_bundle.tar.gz gcc32dbgpthr
      Resource Management Client 번들 설치
      /usr/local/globus/sbin/gpt-build \ globus-resource-management-client-2.2.2-src_bundle.tar.gz gcc32dbg
      Resource Management SDK 번들 설치
      /usr/local/globus/sbin/gpt-build \ globus-resource-management-sdk-2.2.2-src_bundle.tar.gz gcc32dbg
      Resource Management Server 번들 설치
      /usr/local/globus/sbin/gpt-build \ globus-resource-management-server-2.2.2-src_bundle.tar.gz gcc32dbg
    • 사용자 계정에 대해서 다음과 같이 환경 설정을 한다. globus가 사용자이고 shell을 bashrc를 사용한다고 가정하자.
      vi ~globus/.bashrc ... export GLOBUS_LOCATION=/usr/local/globus export GPT_LOCATION=/usr/local/globus . $GLOBUS_LOCATION/etc/globus-user-env.sh ... $source ~globus/.bashrc
    • globus-build뒤의 설정을 한다.
      /usr/local/globus/sbin/gpt-postinstall running /usr/local/globus/setup/globus/setup-globus-common... creating globus-sh-tools-vars.sh creating globus-script-initializer creating Globus::Core::Paths checking globus-hostname Done running /usr/local/globus/setup/globus/setup-globus-gatekeeper... Creating gatekeeper configuration file... Done Creating grid services directory... Done running /usr/local/globus/setup/globus/setup-globus-mds-common... Creating... /usr/local/globus/etc/grid-info.conf Done (생략)
    • GSI 소프트웨어의 setup을 위해 수퍼 유저의 권한을 얻어 다음 명령을 실행시킨다.
      /usr/local/globus/setup/globus/setup-gsi
    • globus package 설치가 제대로 되었는지 확인한다.
      /usr/local/globus/sbin/gpt-verify Verifying run-time dependencies... Verifying setup dependencies... Verifying setup packages... The collection of packages in /usr/local/globus appear to be coherent.
      위와 같은 메시지가 나오면 설치과정은 끝난다.
  5. 성공적인 설치 여부 확인 [[목차]]
    • 인증서 얻기
      • 유저 인증서 요청하기
        /usr/local/globus/bin/grid-cert-request -cn <name>
        이 결과로 ~/.globus/usercert_request.pem을 얻을 수 있고,http://gridtest.hpcnet.ne.kr/GridCA/ 접속하여 인증서 발급을 요청한다. 인증서를 얻게 되면 ~/.globus/usercert.pem 으로 저장한다.
      • host에 대한 gatekeeper 인증서 요청하기 슈퍼 유저의 권한을 얻어 다음 명령을 실행한다.
        grid-cert-request -service host -host sdd125.hpcnet.ne.kr
        마찬가지로 host.req 파일을 가지고 http://gridtest.hpcnet.ne.kr/GridCA/ 접속하여 인증서 발급을 요청한다. 인증서를 얻게 되면 /etc/grid-security/hostcert.pem으로 저장한다.
      • CA의 인증서 설치하기
        1. http://gridtest.hpcnet.ne.kr/GridCA/ 접속해서 메뉴의 'List of Certificates'링크를 클릭하여 데이터베이스에 들어 있는 인증서의 목록을 확인한다.
        2. CA의 인증서의 Subject와 일치되는 항목을 찾아서 Subject를 클릭하면 CA의 인증서에 대한 정보가 표시된다. 'Certificate' 부분을 복사하여서 /etc/grid-security/certificates 디렉토리에 예를 들어 temp.pem 이라는 임시 화일명으로 저장한다.
        3. 쉘 프롬프트 상에서 인증서의 hash 코드를 생성하기 위해서 다음 명령을 사용한다.
          /usr/local/globus/bin/openssl x509 -hash -in temp.pem -noout82da68f0
        4. temp.pem 화일명을 위에 출력된 헤쉬코드를 이용하여 hashcode.0 형태로 변경한다.
          mv temp.pem 82da68f0.0
        5. /etc/grid-security/certificates/ 디렉토리안에 hashcode.signing-policy 파일형태로 다음과 같은 내용을 추가한다.
          vi 82da68f0.signing_policy # EACL entry #1 access_id_CA X509 '/C=KR/O=Globus/CN=KISTI Supercomputing Center CA' pos_rights globus CA:sign cond_subjects globus '"/C=KR/O=Globus/*" "/O=Grid/O=Globus/*"'
      • 참고 : 기존에 gatekeeper 인증을 받은 것이 있다면 다시 받지 않고 그대로 사용할수 있다. 기존 인증관련 파일 $GLOBUS_INSTALL_PATH/etc/밑에 globus_gatekeeper.cert, globus_gatekeeper.key, globus_gatekeeper.request파일을 백업 받는다. 각각의 파일을 (순서대로) /etc/grid-security/밑에 hostcert.pem, hostkey.pem, host.req로 복사하여 사용하면 된다. (CA인증서도 마찬가지로 복사하여 사용하면 된다-기존CA일경우- 단 signing_policy 파일명이 변경되었으므로 주의한다.)
    • 테스트 다음 명령을 실행하여 gatekeeper를 띄운다.
      /usr/local/globus/bin/grid-proxy-init $ /usr/local/globus/bin/globus-personal-gatekeeper -start GRAM contact: sdd125.hpcnet.ne.kr:32915:/O=Grid/O=Globus/OU=hpcnet.ne.kr/CN=globus at sdd125
      다음 명령을 수행하여 정상적인 결과가 나오는지 확인한다.
      /usr/local/globus/bin/globusrun -o -r \ "sdd125.hpcnet.ne.kr:32915:/O=Grid/O=Globus/OU=hpcnet.ne.kr/CN=globus at sdd125" \ '&(executable=/bin/date)'
      이 명령의 결과로 유닉스의 date명령의 결과가 나오면 성공한 것이다. 여기까지 되었다면, 다음 명령을 통해서 gatekeeper를 중지하고 proxy를 제거한다.
      /usr/local/globus/bin/globus-personal-gatekeeper -killall $/usr/local/globus/bin/grid-proxy-destroy
  6. gatekeeper를 서비스로 등록하기 [[목차]] /etc/services 파일에 다음과 같이 추가한다.
    globus-gatekeeper 2119/tcp # Globus Gatekeeper
    host에서 inetd 혹은 xinetd 데몬이 동작하고 있는지에 따라서 설정 또한 달라진다. 여기서는 xinetd이 동작하고 있다고 가정하고, 이에 따른 설정방법을 설명한다. inetd의 경우에는 www.globus.org에서 설치 가이드를 참조바란다. /etc/xinetd.d/ 디렉토리 안에 "globus-gatekeeper"라는 파일을 만들고 다음과 같은 내용을 첨가한다.
    service globus-gatekeeper { socket_type = stream protocol = tcp wait = no user = root server = /usr/local/globus/sbin/globus-gatekeeper server_args = -conf /usr/local/globus/etc/globus-gatekeeper.conf disable = no }
    xinetd을 재구동한다.
    /etc/rc.d/init.d/xinetd restart
    /etc/grid-security/grid-mapfile에 인증서의 subject와 그에 대응되는 username을 추가해야 한다. 다음 명령을 통해서 이 작업이 이루어질 수 있다.
    grid-cert-info -subject O=Grid/O=Globus/OU=hpcnet.ne.kr/CN=globus at sdd125 $ whoamiglobus
    위의 결과를 가지고 /etc/grid-security/grid-mapfile에 추가한다.
    "/O=Grid/O=Globus/OU=hpcnet.ne.kr/CN=globus at sdd125" globus
    위의 작업의 결과로 정상적으로 동작하는지 확인한다.
    grid-proxy-init $ globusrun -o -r localhost '&(executable=/bin/date)'
    참고사항 : error7번이 나오는 경우가 종종 있다. 이때 telnet localhost 2119 했을 때 shared library path가 잡혀 있지 않다는 error가 발생하면 다음과 같이 하면 된다.
    vi /etc/ld.so.conf ... /usr/local/globus/lib # /sbin/ldconfig #/etc/rc.d/init.d/xinetd restart
    이것은 gatekeeper가 2.0에서는 static으로 compile했었지만 2.2는 shared로 compile하기 때문에 발생 할 수 있는 문제이다.
  7. GRAM Reporter 추가하기 [[목차]] 2.0에서 기본 패키지로 들어 있었지만 2.2에서는 다운을 받아서 설치를 해야한다.
    wget http://www-unix.globus.org/ftppub/gt2/2.2/2.2-latest/extra/gram_reporter/src/globus_gram_reporter-2.0.tar.gz $/usr/local/globus/sbin/gpt-build globus_gram_reporter-2.0.tar.gz gcc32dbg $
    이제 실제로 각 Scheduler에 대해서 MDS에 보고할 schema에 대해서 설치해보자. 여기선 fork를 설치한다고 가정하면 다음과 같이 하면 된다.
    wget http://www-unix.globus.org/ftppub/gt2/2.2/2.2-latest/extra/gram_reporter/src/globus_gram_reporter_setup_fork-1.0.tar.gz $/usr/local/globus/sbin/gpt-build globus_gram_reporter_setup_fork-1.0.tar.gz gcc32dbg $
    condor, pbs, lsf에 대해서는 해당 경우에 맞게 다운을 받아서 설치하면 된다. 마지막으로 설치에 대해서 정리하자.
    $ /usr/local/globus/sbin/gpt-postinstall running /usr/local/globus/setup/globus/setup-globus-gram-reporter-fork... Setting up fork gram reporter in MDS ----------------------------------------- Done
  8. Grid Ftp 서버를 서비스로 등록하기 [[목차]] GT2에서는 Grid Ftp 서비스가 추가 되었다. 서버를 등록 해서 서비스를 해보자. /etc/services 파일에 다음과 같이 추가한다.
    gridftp 2811/tcp
    /etc/xinetd.d/ 디렉토리 안에 "grid-ftp"라는 파일을 만들고 다음과 같은 내용을 첨가한다.
    service gridftp { instances = 1000 socket_type = stream wait = no user = root server = /usr/local/globus/sbin/in.ftpd server_args = -l -a -G /usr/local/globus log_on_success += DURATION USERID log_on_failure += USERID nice = 10 disable = no }
    xinetd을 재구동한다.
    /etc/rc.d/init.d/xinetd restart
    제대로 동작하는지 테스트 해보자. GT2에서는 globus-url-copy프로그램에서 gsiftp 프로토콜을 지원하므로, globus-url-copy를 통해 테스트가 가능하다.
    more /home/globus/a.txt hello $ hostname sdd125.hpcnet.ne.kr $ globus-url-copy gsiftp://sdd125.hpcnet.ne.kr/home/globus/a.txt file:///tmp/a.txt $ more /tmp/a.txthello
  9. Grid ncftp client를 설치하자. [[목차]] grid-ftp에 나와있는 것을 구현한 것이 아니라, GSI부분만 추가한 gsincftp client를 설치하자. source를 다운받아서 설치하자. [다음과 같이 2.2에 맞게 package를 수정한것을 다운받으세요]
    wget ftp://gridtest.hpcnet.ne.kr/gt2.2/globus_gsincftp-0.5.tar.gz $ gpt-build globus_gsincftp-0.5.tar.gz gcc32dbg $
    제대로 작동하는지 테스트 해보자.
    gsincftp localhost NcFTP 3.0.3 (April 15, 2001) by Mike Gleason (ncftp@ncftp.com). Connecting to 127.0.0.1... sdd45.hpcnet.ne.kr FTP server (GridFTP Server 1.0 [GSI patch v0.5] wu-2.6.1(2) Wed May 15 19:23:46 KST 2002) ready. Logging in... User globus logged in. Logged in to localhost. ncftp /home/globus >
  10. MDS 설정 (GRIS 설정) [[목차]] 여기서는 GRIS를 설정하고 GIIS 서버에 등록하는 방법을 설명한다. GIIS 서버는 giis.hpcnet.ne.kr라고 가정한다. globus의 일반적인 설정 파일들은 $GLOBUS_LOCATION/etc 디렉토리에 존재한다. 이 디렉토리로 이동하여 다음과 같은 파일을 편집하도록 한다.
    cd /usr/local/globus/etc/ $ vi grid-info-slapd.conf ... #(GRIS설정이므로 GIIS관련 설정부분을 모두 주석처리 한다.) # database giis # suffix "Mds-Vo-name=site, o=Grid" # conf /usr/local/globus/etc/grid-info-site-giis.conf # policyfile /usr/local/globus/etc/grid-info-site-policy.conf # anonymousbind yes # access to * by * write modulepath항목이 다음과 같이 설정되어 있는지 확인한다. modulepath /usr/local/globus/libexec/openldap/gcc32dbgpthr
    GIIS서버의 Mds-Vo-name이 kisti-mds라고 했을때, 다음과 같이 수정한다.
    vi grid-info-resource-register.conf ... dn: Mds-Vo-Op-name=register, Mds-Vo-name=kisti-mds, o=grid ... reghn: sdd125.hpcnet.ne.kr ...
    MDS 서비스를 위한 서버 인증서를 만든다.
    grid-cert-request -service ldap -host sdd125.hpcnet.ne.kr
    /etc/grid-security/ldap디렉토리에 ldapcert_request.pem파일이 생긴다. http://gridtest.hpcnet.ne.kr/GridCA/에 인증서 발급을 요청하고 ldapcert.pem에 저장한다. GRIS 서비스를 가동한다.
    /usr/local/globus/sbin/SXXgris start
    다음 명령을 이용해서 테스트 해보자.
    /usr/local/globus/bin/grid-info-search -x
  11. Common Error [[목차]]
    1. GRAM Job submission failed because the connection to the server failed (check host and port) (error code 12) 문제점 - Unable to contact gatekeeper. Is the gatekeeper running? - Host not reachable? Can you ping it? - Running on a non-standard port? - Check $GLOBUS_LOCATION/var/globus-gatekeeper.log 해결책 - Add gatekeeper to services, /etc/rc.d/init.d/xinetd restart - Include a contact string if non-standard port - Build static if dying on startup with "library not found" - Install gatekeeper certificate or fix key permissions
    2. Error loading shared library 문제점 - LD_LIBRARY_PATH not set 해결책 - (csh) source $GLOBUS_LOCATION/etc/globus-user-env.csh - (sh) . $GLOBUS_LOCATION/etc/globus-user-env.sh
    3. GRAM Job submission failed because authentication with the remote server failed (error code 7) 문제점 - globus-gatekeeper.log: Authenticated globus user: /O=Grid/O=Globus/OU=mcs.anl.gov/CN=Charles Bacon - Failure: globus_gss_assist_gridmap() failed authorization. rc = 1 해결책 - Add to grid-mapfile - Check 'grid-cert-info -subject' and 'id'
    4. gram_init failure: Problem with local credentials no proxy credentials: run grid-proxy-init or wgpi first 문제점 - No proxy/expired proxy 해결책 - Run grid-proxy-init (wgpi = Windows grid-proxy-init)
    5. GRAM Job submission failed because the job manager failed to open stdout (error code 73) 문제점 - Other machine cannot open a connection back to the client - Bad result from globus-hostname? - Error in .globus/.gass_cache on remote machine? (rare!) 해결책 - Edit /etc/hosts or set $GLOBUS_HOSTNAME - NFS trouble with ~/.globus on remote server?
    6. GRAM Job submission failed because the provided RSL string includes variables that could not be identified (error code 39) 문제점 - Globus-job-get-output from a 2.0 client to a 1.1.x gatekeeper 해결책 - globus-job-get-output sets GLOBUS_LOCATION, use globus-job-run instead of globus-job-submit
Posted by 생각처럼
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함